|
|
|
| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title> |
| NoSQL数据库之-------Redis(二)_慕课手记 |
| </title> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> |
| <meta name="renderer" content="webkit" /> |
| <meta name="mobile-agent" content="format=wml"; url="https://m.imooc.com/article/16621"> |
| <link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.imooc.com/article/16621"> |
| <meta name="mobile-agent" content="format=xhtml"; url="https://m.imooc.com/article/16621"> |
| <meta name="mobile-agent" content="format=html5"; url="https://m.imooc.com/article/16621"> |
| <meta property="qc:admins" content="77103107776157736375" /> |
| <meta property="wb:webmaster" content="c4f857219bfae3cb" /> |
| <meta http-equiv="Access-Control-Allow-Origin" content="*" /> |
| <meta http-equiv="Cache-Control" content="no-transform " /> |
| <meta http-equiv="Cache-Control" content="no-siteapp" /> |
| <link rel="dns-prefetch" href="//www.imooc.com" /> |
| <link rel="dns-prefetch" href="//img.imooc.com" /> |
| <link rel="dns-prefetch" href="//img1.sycdn.imooc.com" /> |
| <link rel="apple-touch-icon" sizes="76x76" href="/static/img/common/touch-icon-ipad.png"> |
| <link rel="apple-touch-icon" sizes="120x120" href="/static/img/common/touch-icon-iphone-retina.png"> |
| <link rel="apple-touch-icon" sizes="152x152" href="/static/img/common/touch-icon-ipad-retina.png"> |
|
|
|
|
|
|
| <meta name="Description" content="上文(http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例"/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| <link rel="stylesheet" href="/static/moco/v1.0/dist/css/moco.min.css?t=202008282315" type="text/css" /> |
| <link rel="stylesheet" href="/static/lib/swiper/swiper-3.4.2.min.css?t=202008282315"> |
|
|
|
|
|
|
|
|
| <script type="text/javascript"> |
|
|
| var OP_CONFIG={"module":"article","page":"details","userInfo":{"uid":"7991643","nickname":"weixin_\u6155\u65e0\u5fcc0413848","head":"\/\/img1.sycdn.imooc.com\/user\/5b8cea750001b9f702000200-80-80.jpg","usertype":"1","roleid":0}}; |
| var isLogin = 1; |
| var is_choice = ""; |
| var seajsTimestamp="v=202008282315"; |
| var _msg_unread = 0; |
| var _not_unread = 0; |
| var _cart_num = 0; |
| </script> |
|
|
|
|
|
|
|
|
|
|
|
|
| <link href="//moco.imooc.com/captcha/style/captcha.min.css" rel="stylesheet"> |
| <script type="text/javascript" src="https://cdn.webfont.youziku.com/wwwroot/js/wf/youziku.api.min.js?"></script> |
| <script type="text/javascript"> |
| $youziku.load(".detail-title, .detail-content h1,.detail-content h2,.detail-content h3,.detail-content h4,.detail-content h5,.detail-content h6", "37af461390fa4d138f5c3d277f7286dc", "SourceHanSerifSC-Heavy"); // 思源宋体heavy |
| $youziku.load(".detail-content blockquote", "d9a0d855583142c3b2cc3bf1646a8473", "SourceHanSerifSC-Regular"); // 思源宋体regular |
| $youziku.load(".detail-content ul,.detail-content ol,.detail-content p, .detail-content pre, .detail-content code, #code-copy", "3d84aabcf9e44b6f8c6fa91c61fa926e", "HYQiHei-55S"); // 汉仪旗黑55s |
| $youziku.load(".detail-content strong", "fd94fff3a17546a28913a79613bddcec", "HYQiHei-77S"); // 汉仪旗黑70s |
|
|
| $youziku.draw(); |
| </script> |
| <script> |
| var isLogin=1 |
| var _hmt = _hmt || []; |
| var pageInfo = { |
| canForward:"1", |
| id: "16621", |
| praiseNum:"10" |
| } |
| var dtid = "18459"; |
| var marking = "be"; |
| var user = { |
| uid : '7991643' |
| } |
| var authorUid = { |
| uid : '1323320' |
| } |
| var curPage = 'details' |
|
|
| var a_id = 16621 |
|
|
| // 为html转码,article_content 为新markdown编辑器接收的初始化内容 |
| var article_content = "<p>上文(<a href="http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例" target="_blank" rel="nofollow">http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例</a>。<br />\nRedis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。<br />\n下面将会给出实例:<br />\n1.Java操作Redis键(key)</p>\n<pre class="prettyprint"><code>package com.redis1;\n\nimport java.util.List;\n\nimport redis.clients.jedis.Jedis;\n\n/**\n * Redis keys实例\n * @author dell\n *\n */\npublic class RedisKeys {\n public static void main(String[] args) {\n //连接redis本地服务\n Jedis jedis = new Jedis("127.0.0.1");\n System.out.println("redis本地服务连接成功!");\n /*Redis Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。\n BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,\n 原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。\n */\n System.out.println(jedis.bgsave());\n //Redis Echo 命令用于打印给定的字符串。\n System.out.println(jedis.echo("redis"));\n //Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。\n System.out.println(jedis.flushAll());\n //Redis Flushdb 命令用于清空当前数据库中的所有 key。\n System.out.println(jedis.flushDB());\n /*\n Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。\n 通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。\n */\n System.out.println(jedis.ping());\n //Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。\n System.out.println("\\ninfo-----&gt;"+jedis.info());\n //Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。\n System.out.println(jedis.randomKey());\n //Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。\n System.out.println(jedis.save());\n //Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。\n System.out.println(jedis.unwatch());\n /*\n Redis Multi 命令用于标记一个事务块的开始。\n 事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。\n */\n\n System.out.println(jedis.multi());\n /*Redis Quit 命令用于关闭与当前客户端与redis服务的连接。\n 一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。*/\n System.out.println(jedis.quit());\n }\n\n}</code></pre>\n<p>2.Java操作Redis列表(list)</p>\n<pre class="prettyprint"><code>package com.redis1;\n\nimport java.util.List;\n\nimport redis.clients.jedis.BinaryClient;\nimport redis.clients.jedis.Jedis;\n\n/**\n * redis list数据类型\n * \n * @author dell\n *\n */\npublic class RedisList {\n\n public static void main(String[] args) {\n // 连接本地的 Redis 服务\n Jedis jedis = new Jedis("localhost");\n System.out.println("redis本地服务连接成功!");\n /*\n * lpush 表示从list的头部插入元素 rpush 表示从list的尾部插入元素 linsert 在列表的某个元素前或者后插入元素\n * index 表示列表中index位置的元素 llen 返回列表的长度 lpop list 0 -1\n * 表示从mylist列表的头部开始删除所有元素 rpop list 0 -1 表示从mylist列表的尾部开始删除所有元素 lrange\n * list 0 -1 //使用lrange取出元素 0表示从头部第一个元素,-1表示从尾部第一个元素取出,lrange mylist 0\n * -1 表示取出mylist中的所有数据\n */\n // 存储数据到列表中\n jedis.lpush("SQL", "Redis");\n jedis.lpush("SQL", "Mongodb");\n jedis.lpush("SQL", "Mysql");\n jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java");\n jedis.rpush("SQL", "SqlServer");\n jedis.rpush("SQL", "Oracle");\n\n jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java");\n // Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。\n System.out.println(jedis.lpushx("SQL", "Redis1"));\n // 获取存储的数据并输出\n List&lt;String&gt; list = jedis.lrange("SQL", 0, -1);\n for (int i = 0; i &lt; list.size(); i++) {\n System.out.println("Stored string in redis:: " + list.get(i));\n }\n\n // 获得列表的长度\n System.out.println("redis列表长度为:" + jedis.llen("SQL"));\n // 删除列表中的元素\n jedis.del("SQL");\n System.out.println("删除了redis列表!");\n // 获得列表的长度\n System.out.println("redis列表长度为:" + jedis.llen("SQL"));\n // 列表下标从0开始\n System.out.println("redis列表下标为5的元素是:" + jedis.lindex("SQL", 5));\n /*\n * Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0\n * 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2\n * 表示列表的倒数第二个元素,以此类推。\n */\n System.out.println(jedis.ltrim("SQL", 0, 4));\n\n }\n\n}</code></pre>\n<p>3.Java操作Redis集合(set)</p>\n<pre class="prettyprint"><code>package com.redis1;\n\nimport java.util.Set;\n\nimport redis.clients.jedis.Jedis;\n\n/**\n * Redis set数据类型\n * @author dell\n *\n */\npublic class RedisSet {\n\n public static void main(String[] args) {\n Jedis jedis = new Jedis("127.0.0.1",6379);\n\n //set方法用于向redis数据库中添加设置数据\n jedis.set("k1", "v1");\n jedis.set("k2", "v2");\n jedis.set("k3", "v3");\n //get方法用于获取某个键所对应的值\n System.out.println(jedis.get("k3"));\n //del方法用于删除某个键所对应的值\n System.out.println(jedis.del("k1"));\n //getSet方法用户获取某个键所对应的值,键不存在,返回null;键存在,返回对应的值\n System.out.println(jedis.getSet("k4", "v4"));\n /*getrange(key, startOffset, endOffset)方法用于获取存在在key中字符串的子字符串\n 字符串的截取范围由start和end两个偏移量决定\n */\n System.out.println(jedis.getrange("k2", 1, -1));\n //lpop方法用于移除并返回列表的第一个元素\n System.out.println(jedis.lpop("k1"));\n //rpop方法用于移除并返回列表的最后一个元素\n System.out.println(jedis.rpop("k5"));\n //返回集合的长度\n Set&lt;String&gt; sets = jedis.keys("*");\n System.out.println(sets.size());\n\n }\n\n}</code></pre>\n<p>4.Java操作Redis字符串(String)</p>\n<pre class="prettyprint"><code>package com.redis1;\n\nimport redis.clients.jedis.Jedis;\n\n/**\n * Redis String数据类型\n * @author dell\n *\n */\npublic class RedisString {\n\n public static void main(String[] args) {\n //连接本地redis服务\n Jedis jedis = new Jedis("127.0.0.1");\n System.out.println("redis服务连接成功!");\n\n //设置redis字符串数据\n jedis.set("type", "string");\n //获取存储的数据并输出\n System.out.println("redis存储的值为:"+jedis.get("type"));\n\n }\n\n}</code></pre>\n<p>5.Java 操作Redis排序</p>\n<pre class="prettyprint"><code>package com.redis2;\n\nimport org.junit.Before;\nimport org.junit.Test;\n\nimport redis.clients.jedis.Jedis;\n\n/**\n * Redis排序\n * @author dell\n *\n */\npublic class Java_RedisTest {\n private Jedis jedis;\n\n @Before\n public void setup(){\n //连接redis服务器\n jedis = new Jedis("127.0.0.1",6379);\n //权限认证\n //jedis.auth("admin");\n }\n\n @Test\n public void test() throws InterruptedException{\n //jedis排序\n //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) \n jedis.del("a"); //先清除数据,在加入数据进行测试\n jedis.rpush("a", "1");\n jedis.rpush("a", "6");\n jedis.rpush("a", "4");\n jedis.rpush("a", "2");\n jedis.rpush("a", "5");\n jedis.rpush("a", "3");\n //排序前\n System.out.println("排序前:"+jedis.lrange("a", 0, -1));\n //排序\n System.out.println("排序:"+jedis.sort("a"));\n //排序后\n System.out.println("排序后:"+jedis.lrange("a", 0, -1));\n }\n}</code></pre>\n<p>更多实例代码,在此不再一一列举,感兴趣的朋友,实例代码见:<br />\n<a href="https://github.com/JavaCodeMood/redis1" target="_blank" rel="nofollow">https://github.com/JavaCodeMood/redis1</a></p>\n<p>多谢各位朋友的支持!</p>"; |
| // 为html反转码 |
| article_content = article_content.replace(/\<\;/g, "<").replace(/\>\;/g, ">").replace(/\&\;/g, "&").replace(/\"\;/g, '"').replace(/\&apos\;/g, "'"); |
| // 递归遍历dom,处理图片懒加载 |
| function dfs(root) { |
| var nodes = Array.prototype.slice.call(root.children); |
| if (nodes.length) { |
| nodes.forEach(function (node) { |
| if(node.tagName == 'IMG') { |
| var src = node.src; |
| var alt = node.alt; |
| var reg = /(?:imooc|mukewang)\.com\/[A-Za-z0-9]+?\.jpg$/; |
| // ueditor 上传的图片,alt为原图高清 |
| if(reg.test(alt)) { |
| !node.getAttribute('data-src') && node.setAttribute('data-src', alt); |
| node.setAttribute('data-original', alt); // 直接显示原图 |
| } else { |
| node.setAttribute('data-original', src); |
| } |
| node.setAttribute('class', 'lazyload'); |
| node.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC'; |
| } |
| dfs(node); |
| }); |
| } |
| } |
| // 创建手记内容dom节点 |
| var articleEl = document.createElement("div"); |
| articleEl.innerHTML = article_content; |
| // 遍历手记dom树 |
| dfs(articleEl); |
| </script> |
|
|
|
|
|
|
| <script type="text/javascript"> |
|
|
| eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('!4(){3 b={};3 d=0;3 5=[{c:\'//k.p.h/k/m/K/L.q\',6:0},{c:\'//m.p.h/I/J-O.q\',6:0}];3 u=4(){3 j,n=e P("(^| )"+"l=([^;]*)(;|$)");9(j=r.s.M(n)){o N(j[2])}D{o C}};3 A=4(t){3 B=u();3 8=e H();8.G(8.F()+E*v*v*10);r.s="l="+t+";13="+8.14()+";15=/;T=U.h";9(t&&t!=B){R.Y.Z()}};3 x=4(i){3 7=e X();7.V=4(){W(b[i]);b[i]=C;a(i,0)};7.Q=4(){a(i,1)};b[i]=S(4(){7.z="";a(i,1)},11);7.z=5[i].c+"?t="+12.16()};3 a=4(y,6){d++;5[y].6=6;9(d==5.f){3 g=0;w(3 i=0;i<5.f;i++){9(5[i].6==1){g=1}}A(g)}};w(3 i=0;i<5.f;i++){x(i)}}()',62,69,'|||var|function|urls|flag|imgobj|exp|if|callback|timer|url|count|new|length|error|com||arr|static|IMCDNS|img|reg|return|mukewang|png|document|cookie||getcookie|60|for|checkCdn|index|src|setcookie|_0|null|else|24|getTime|setTime|Date|images|unknow|common|logo|match|unescape|80|RegExp|onerror|window|setTimeout|domain|imooc|onload|clearTimeout|Image|location|reload|1000|3000|Math|expires|toGMTString|path|random'.split('|'),0,{})) |
|
|
| </script> |
| <script src="/static/lib/zhugeio/init.js?v=202008282315"></script> |
| <link rel="stylesheet" href="//static3.sycdn.imooc.com/static/css/??base.css,common/common-less.css?t=2.5,common/article-layout-less.css?t=2.5,article/article-detail-less.css,common/article-layout-less.css?v=202008282315" type="text/css" /> |
| </head> |
|
|
| <body > |
|
|
|
|
| <div id="globalTopBanner"></div> |
| <div id="new_header" class="special-header"> |
| <div class="page-container new-header clearfix" id="nav" > |
| <ul class="nav-item"> |
| <li><a href="/" target="_self" class="imooc">慕课网首页</a></li> |
| <li><a href="/course/list" target="_self">免费课程</a></li> |
| <li><a href="//coding.imooc.com" target="_self">实战课程</a></li> |
| <li><a href="//class.imooc.com" class="" target="_self">金职位<i class="icn-new"></i></a></li> |
| <li><a href="/wiki" target="_self">慕课教程</a></li> |
| <li><a href="/read" target="_self">专栏</a></li> |
| <li><a href="/article" class="active" target="_self">手记</a></li> |
| |
| </ul> |
| <div class="header-right"> |
| <div class="app-download" id="js-app-load"> |
| <a href="//www.imooc.com/mobile/app" target="_blank">下载APP</a> |
| <div class="app-load-box clearfix js-load-box"> |
| <div class="mobile-load-box"> |
| <h4>慕课网APP - 随时随地学编程</h4> |
| <img src="/static/img/common/appload.png" class="l"> |
| <div class="r"> |
| <a class="app-load-btn" href="https://itunes.apple.com/cn/app/mu-ke-wang/id722179140?mt=8" target="_blank"><i class="icon-apple"></i>App Store下载</a> |
| <a class="app-load-btn" href="//www.imooc.com/mobile/appdown" target="_blank"><i class="icon-android"></i>Android下载</a> |
| <p>扫描下载慕课网APP</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="search-box"> |
| <a href="javascript:void(0);" id="common-nav-search"> |
| <i class="imv2-search2"></i> |
| </a> |
| <div class="input-search hide" id="common-input-search"> |
| <div class="input-box"> |
| <input type="text" class="nav-search-input" autocomplete="off"> |
| <a href="javascript:void(0);" class="nav-searchBtn js-nav-searchBtn"> |
| <i class="imv2-search2"></i> |
| </a> |
| </div> |
| <div class="nav-search-box hide"> |
| <div class="hot"> |
| <h2>热搜</h2> |
| <div class="hot-box"> |
| </div> |
| </div> |
| <div class="history hide"> |
| <h2>最近搜索<a href="javascript:void(0);" class="history-clear js-clear-history">清空</a></h2> |
| <div class="history-box"> |
| </div> |
| </div> |
| </div> |
| <div class="nav-correlate-box hide"> |
| <div class="correlate"> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="shop-cart" id="shop-cart"> |
| <a href="//order.imooc.com/pay/cart" class="shop-cart-icon" target="_blank"> |
| <span class="imv2-shopping-cart2 js-endcart"></span><span class="shopping_icon js-cart-num" data-ordernum="0" data-cartnum="0" style='display: none'>0</span> |
| </a> |
| <div class="my-cart" id="js-my-cart"></div> |
| </div> |
| <div id="login-area"> |
| <ul class="clearfix logined"> |
| <li class='remind_warp'> |
| <i class="msg_remind"></i> |
| <a target="_blank" href='//www.imooc.com/u/7991643/notices'> |
| <i class='imv2-bell1'></i> |
| </a> |
| </li> |
| <li class="user-mycourse-box"> |
| <a class="js-header-courseurl" href="" target="_self"> |
| <span>我的课程</span> |
| </a> |
| </li> |
| <li class="user-card-box" id='header-user-card'> |
| <a id="header-avator" class="user-card-item js-header-avator" action-type="my_menu" href="" target="_self"> |
| <img width="40" height="40"> |
| <i class="myspace_remind" style="display: none;"></i> |
| <span style="display: none;">动态提醒</span> |
| </a> |
| <div class="g-user-card"></div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div id="sub-header"> |
| <div class="sub-container" id="sub-nav"> |
| <a class="article-logo" href="/article"><img style="height: 60px" src="/static/img/article/article-logo-recommended.png" alt=""></a> |
| <div class="operate-area clearfix"> |
| <span> |
| <a href="/article/publish" target="_blank" class="btn btn-blue btn-article">写文章</a> |
| </span> |
|
|
|
|
| </div> |
| <div class='search-warp clearfix' style='min-width: 32px;'> |
|
|
|
|
| <div class="search-area" data-search="top-banner"> |
| <input class="search-input" data-suggest-trigger="suggest-trigger" placeholder="搜索感兴趣的知识和文章" type="text" autocomplete="off"> |
| <input type='hidden' class='btn_search' data-search-btn="search-btn" /> |
| <ul class="search-area-result" data-suggest-result="suggest-result"> |
| </ul> |
| </div> |
| <div class='showhide-search' data-show='no'><i class='icon-search'></i></div> |
| </div> |
|
|
| </div> |
| </div> |
| <div class="bindHintBox js-bindHintBox hide"> |
| <div class="pr"> |
| 为了账号安全,请及时绑定邮箱和手机<a href="/user/setbindsns" class="ml20 color-red" target="_blank">立即绑定</a> |
| <button class="closeBindHint js-closeBindHint" type="button"></button> |
| <div class="arrow"> </div> |
| </div> |
| </div> |
|
|
|
|
| <div id="main"> |
|
|
| <div class="main_con clearfix"> |
| |
| <div class="active-box js-active-fixed"> |
| <div class="share-box"> |
| <div class="small-share"> |
| <ul class="share-wrap"> |
| <li class="weichat-posi"> |
| |
| <div class="praise-box"> |
| <button id="js-praise-left"><span class="imv2-thumb_up"></span></button> |
| <span class="praise-num">10</span> |
| </div> |
| |
|
|
|
|
|
|
| <div class="icon-warp"> |
| <div class="follow-warp"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'pl'])" data-track="pl-1-1" href="#comment" class="icon-nav imv2-chat_bubble" title="评论"></a> |
| <span class="comment-num">评论</span> |
| </div> |
| </div> |
| <div class="icon-warp"> |
| <div class="follow-warp"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'sc'])" data-track="sc-1-1" data-id="16621" href="javascript:" class="js-follow dc-follow icon-nav icon-star2 " title="收藏"></a> |
| <span>37</span> |
| </div> |
| </div> |
| <div class="icon-warp "> |
| <a class="js-forward-btn imv2-forward1 icon-nav" href="#"> |
| <span class="sharetext">转发</span> |
| </a> |
| |
| </div> |
| <p class="line"></p> |
|
|
| <div class="bdsharebuttonbox weichat-style"> |
| <div class="sharetext">分享</div> |
| <div class="icon-warp2"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'wx'])" data-track="letfshare-1-1" href="#" class="bds_weixin icon-nav icon-share-weichat share-icon" data-cmd="weixin" title="分享到微信"></a> |
| </div> |
| <div class="icon-warp2"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'wb'])" data-track="letfshare-1-2" href="#" class="bds_tsina icon-nav icon-share-weibo share-icon" data-cmd="tsina" title="分享到新浪微博"></a> |
| </div> |
| <div class="icon-warp2"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'qq'])" data-track="letfshare-1-3" href="#" class="bds_qzone icon-nav icon-share-qq share-icon" data-cmd="qzone" title="分享到QQ空间"></a> |
| </div> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| |
| <div class="left_essay l"> |
| <div class="part_essay js-part_essay"> |
| <div class="originalImg"></div> |
| |
| <div class="detail-path"> |
| <a class="imooc" target="_blank" href="//www.imooc.com"><i class="imv2-imooc"></i></a> |
| <a href="/article" target="_blank">手记</a> /<a href="/article/be" target="_blank" class="js-column">后端开发</a> |
| </div> |
| |
| <div class="detail-title-wrap"> |
| <h1 class="detail-title"> |
| <span class="d-t js-title">NoSQL数据库之-------Redis(二)</span> |
| </h1> |
| <div class="dc-profile clearfix"> |
| <div class="l"> |
| <span class="spacer">2017.02.26 20:19</span> |
| <span class="spacer spacer-2">2353浏览</span> |
| </div> |
| <div class="r path-right-box"> |
| <div class="rinfo l"> |
| <a href="javascript:void(0);" data-id="16621" data-type="9" data-uid="1323320" class="dc-sns js-tip-off tipoff" data-src="/article/16621"><i class="imv2-error_c"></i>举报</a> |
|
|
|
|
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="detail-content-wrap"> |
| <div class="detail-content js-lookimg"> |
|
|
| <div id="article_content"> |
| <p>上文(<a href="http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例" target="_blank" rel="nofollow">http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例</a>。<br /> |
| Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。<br /> |
| 下面将会给出实例:<br /> |
| 1.Java操作Redis键(key)</p> |
| <pre class="prettyprint"><code>package com.redis1; |
|
|
| import java.util.List; |
|
|
| import redis.clients.jedis.Jedis; |
|
|
| /** |
| * Redis keys实例 |
| * @author dell |
| * |
| */ |
| public class RedisKeys { |
| public static void main(String[] args) { |
| //连接redis本地服务 |
| Jedis jedis = new Jedis("127.0.0.1"); |
| System.out.println("redis本地服务连接成功!"); |
| /*Redis Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。 |
| BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程, |
| 原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。 |
| */ |
| System.out.println(jedis.bgsave()); |
| //Redis Echo 命令用于打印给定的字符串。 |
| System.out.println(jedis.echo("redis")); |
| //Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。 |
| System.out.println(jedis.flushAll()); |
| //Redis Flushdb 命令用于清空当前数据库中的所有 key。 |
| System.out.println(jedis.flushDB()); |
| /* |
| Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。 |
| 通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。 |
| */ |
| System.out.println(jedis.ping()); |
| //Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。 |
| System.out.println("\ninfo----->"+jedis.info()); |
| //Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。 |
| System.out.println(jedis.randomKey()); |
| //Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。 |
| System.out.println(jedis.save()); |
| //Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。 |
| System.out.println(jedis.unwatch()); |
| /* |
| Redis Multi 命令用于标记一个事务块的开始。 |
| 事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。 |
| */ |
|
|
| System.out.println(jedis.multi()); |
| /*Redis Quit 命令用于关闭与当前客户端与redis服务的连接。 |
| 一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。*/ |
| System.out.println(jedis.quit()); |
| } |
|
|
| }</code></pre> |
| <p>2.Java操作Redis列表(list)</p> |
| <pre class="prettyprint"><code>package com.redis1; |
|
|
| import java.util.List; |
|
|
| import redis.clients.jedis.BinaryClient; |
| import redis.clients.jedis.Jedis; |
|
|
| /** |
| * redis list数据类型 |
| * |
| * @author dell |
| * |
| */ |
| public class RedisList { |
|
|
| public static void main(String[] args) { |
| // 连接本地的 Redis 服务 |
| Jedis jedis = new Jedis("localhost"); |
| System.out.println("redis本地服务连接成功!"); |
| /* |
| * lpush 表示从list的头部插入元素 rpush 表示从list的尾部插入元素 linsert 在列表的某个元素前或者后插入元素 |
| * index 表示列表中index位置的元素 llen 返回列表的长度 lpop list 0 -1 |
| * 表示从mylist列表的头部开始删除所有元素 rpop list 0 -1 表示从mylist列表的尾部开始删除所有元素 lrange |
| * list 0 -1 //使用lrange取出元素 0表示从头部第一个元素,-1表示从尾部第一个元素取出,lrange mylist 0 |
| * -1 表示取出mylist中的所有数据 |
| */ |
| // 存储数据到列表中 |
| jedis.lpush("SQL", "Redis"); |
| jedis.lpush("SQL", "Mongodb"); |
| jedis.lpush("SQL", "Mysql"); |
| jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java"); |
| jedis.rpush("SQL", "SqlServer"); |
| jedis.rpush("SQL", "Oracle"); |
|
|
| jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java"); |
| // Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。 |
| System.out.println(jedis.lpushx("SQL", "Redis1")); |
| // 获取存储的数据并输出 |
| List<String> list = jedis.lrange("SQL", 0, -1); |
| for (int i = 0; i < list.size(); i++) { |
| System.out.println("Stored string in redis:: " + list.get(i)); |
| } |
|
|
| // 获得列表的长度 |
| System.out.println("redis列表长度为:" + jedis.llen("SQL")); |
| // 删除列表中的元素 |
| jedis.del("SQL"); |
| System.out.println("删除了redis列表!"); |
| // 获得列表的长度 |
| System.out.println("redis列表长度为:" + jedis.llen("SQL")); |
| // 列表下标从0开始 |
| System.out.println("redis列表下标为5的元素是:" + jedis.lindex("SQL", 5)); |
| /* |
| * Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0 |
| * 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 |
| * 表示列表的倒数第二个元素,以此类推。 |
| */ |
| System.out.println(jedis.ltrim("SQL", 0, 4)); |
|
|
| } |
|
|
| }</code></pre> |
| <p>3.Java操作Redis集合(set)</p> |
| <pre class="prettyprint"><code>package com.redis1; |
|
|
| import java.util.Set; |
|
|
| import redis.clients.jedis.Jedis; |
|
|
| /** |
| * Redis set数据类型 |
| * @author dell |
| * |
| */ |
| public class RedisSet { |
|
|
| public static void main(String[] args) { |
| Jedis jedis = new Jedis("127.0.0.1",6379); |
|
|
| //set方法用于向redis数据库中添加设置数据 |
| jedis.set("k1", "v1"); |
| jedis.set("k2", "v2"); |
| jedis.set("k3", "v3"); |
| //get方法用于获取某个键所对应的值 |
| System.out.println(jedis.get("k3")); |
| //del方法用于删除某个键所对应的值 |
| System.out.println(jedis.del("k1")); |
| //getSet方法用户获取某个键所对应的值,键不存在,返回null;键存在,返回对应的值 |
| System.out.println(jedis.getSet("k4", "v4")); |
| /*getrange(key, startOffset, endOffset)方法用于获取存在在key中字符串的子字符串 |
| 字符串的截取范围由start和end两个偏移量决定 |
| */ |
| System.out.println(jedis.getrange("k2", 1, -1)); |
| //lpop方法用于移除并返回列表的第一个元素 |
| System.out.println(jedis.lpop("k1")); |
| //rpop方法用于移除并返回列表的最后一个元素 |
| System.out.println(jedis.rpop("k5")); |
| //返回集合的长度 |
| Set<String> sets = jedis.keys("*"); |
| System.out.println(sets.size()); |
|
|
| } |
|
|
| }</code></pre> |
| <p>4.Java操作Redis字符串(String)</p> |
| <pre class="prettyprint"><code>package com.redis1; |
|
|
| import redis.clients.jedis.Jedis; |
|
|
| /** |
| * Redis String数据类型 |
| * @author dell |
| * |
| */ |
| public class RedisString { |
|
|
| public static void main(String[] args) { |
| //连接本地redis服务 |
| Jedis jedis = new Jedis("127.0.0.1"); |
| System.out.println("redis服务连接成功!"); |
|
|
| //设置redis字符串数据 |
| jedis.set("type", "string"); |
| //获取存储的数据并输出 |
| System.out.println("redis存储的值为:"+jedis.get("type")); |
|
|
| } |
|
|
| }</code></pre> |
| <p>5.Java 操作Redis排序</p> |
| <pre class="prettyprint"><code>package com.redis2; |
|
|
| import org.junit.Before; |
| import org.junit.Test; |
|
|
| import redis.clients.jedis.Jedis; |
|
|
| /** |
| * Redis排序 |
| * @author dell |
| * |
| */ |
| public class Java_RedisTest { |
| private Jedis jedis; |
|
|
| @Before |
| public void setup(){ |
| //连接redis服务器 |
| jedis = new Jedis("127.0.0.1",6379); |
| //权限认证 |
| //jedis.auth("admin"); |
| } |
|
|
| @Test |
| public void test() throws InterruptedException{ |
| //jedis排序 |
| //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) |
| jedis.del("a"); //先清除数据,在加入数据进行测试 |
| jedis.rpush("a", "1"); |
| jedis.rpush("a", "6"); |
| jedis.rpush("a", "4"); |
| jedis.rpush("a", "2"); |
| jedis.rpush("a", "5"); |
| jedis.rpush("a", "3"); |
| //排序前 |
| System.out.println("排序前:"+jedis.lrange("a", 0, -1)); |
| //排序 |
| System.out.println("排序:"+jedis.sort("a")); |
| //排序后 |
| System.out.println("排序后:"+jedis.lrange("a", 0, -1)); |
| } |
| }</code></pre> |
| <p>更多实例代码,在此不再一一列举,感兴趣的朋友,实例代码见:<br /> |
| <a href="https://github.com/JavaCodeMood/redis1" target="_blank" rel="nofollow">https://github.com/JavaCodeMood/redis1</a></p> |
| <p>多谢各位朋友的支持!</p> |
| </div> |
| <div> |
| <div class=""></div> |
| <div class="showMore"><span>点击查看更多内容</span></div> |
| </div> |
| </div> |
| |
| <div class="cat-box"> |
| <div class="cat-wrap clearfix"> |
| <a class="cat l" href="/article/tag/3" target="_blank">JAVA</a> |
| </div> |
| <div class="original-warp"> |
| <p class="original">本文原创发布于慕课网 ,转载请注明出处,谢谢合作</p> |
| </div> |
| </div> |
| |
| <div class="praise-box"> |
| <button id="js-praise"><span class="imv2-thumb_up"></span></button> |
| <div class="num-person"><em class="num">10</em>人点赞</div> |
| <div class="praise-share icon-drop_up hide"> |
| <div class="praise-share-box"> |
| <p>若觉得本文不错,就分享一下吧!</p> |
| <div class="share-content bdsharebuttonbox"> |
| <div class="icon-warp"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_top', 'share', 'wx'])" data-track="topshare-1-1" href="#" class="bds_weixin icon-nav imv2-weixin_c share-icon" data-cmd="weixin" title="分享到微信"></a> |
| </div> |
| <div class="icon-warp"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_top', 'share', 'wb'])" data-track="topshare-1-2" href="#" class="bds_tsina icon-nav imv2-weibo_c share-icon" data-cmd="tsina" title="分享到新浪微博"></a> |
| </div> |
| <div class="icon-warp"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_top', 'share', 'qq'])" data-track="topshare-1-3" href="#" class="bds_qzone icon-nav imv2-qq_c share-icon" data-cmd="qzone" title="分享到QQ空间"></a> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
|
|
|
|
| </div> |
|
|
| <div id="articleReply"></div> |
|
|
| <div class="opus-wrap clearfix"> |
| <div class="detail-left"> |
| <div class="df-title" id="all_comments"><span class="comment-num"><i></i></span> 评论</div> |
| <div class="detail-feedback-wrap"> |
| |
| <div class="df-ipt-wrap clearfix" id="comment"> |
|
|
| <div class="feeds-author l"> |
|
|
| 评论 |
|
|
| </div> |
| <p class="fadeInput l js-showcommentModal">共同学习,写下你的评论</p> |
|
|
| </div> |
| |
| |
| <div id="js-feedback-list-wrap" class="feedback-list js-feedback-lookimg"> |
| <p class="feedback-loading"> |
| 评论加载中... |
| </p> |
| </div> |
| |
| |
|
|
| <div class="qa-comment-page hide"> |
| <div class="moreBtn js-more" data-page="2">展开查看更多评论</div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="article_wrap"> |
| <div class="line_con"> |
| <p class="line"></p> |
| <p class="line_text">相关文章推荐</p> |
| </div> |
| <div class="article-wrapper"> |
| <div class="articleCon js-articleCon js-usercard-box"> |
|
|
| </div> |
|
|
| <div class="feed-loading js-feed-loading" data-page="1"> |
| <i class='imv2-loading'></i><span>正在加载中</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="right_recommend r"> |
| |
| <div class="author_info js-author_info clearfix"> |
| <a href="/u/1323320/articles" class="l img_con" title="霜花似雪" target="_blank"> |
| <img src="//img1.sycdn.imooc.com/5e8fdfab0001c94c09600960-100-100.jpg"> |
| </a> |
| <div class="text_con l"> |
| <div class="name_con clearfix"> |
| <p class="name l"> |
| <a class="nick" href="/u/1323320/articles" title="霜花似雪" target="_blank"> |
| 霜花似雪 |
| </a> |
| </p> |
| <p class="forward"> |
| <span class="js-add-follow" data-uid='1323320' data-type="1" >关注</span> |
|
|
| <span class="js-already-follow js-has-already" data-uid='1323320' data-type="2" style="display:none;">已关注</span> |
| </p> |
| </div> |
| <div class="job"> |
| <span class="job-title" title="JAVA开发工程师">JAVA开发工程师</span> |
| <span class="job-icon"> |
| <i class="user-icon great" title="认证作者"></i> |
|
|
| </span> |
| </div> |
| <div class="contribution clearfix"> |
| <a href="/u/1323320/articles" target="_blank" class="js-article-num l"> |
| <span></span> 篇手记 |
| </a> |
| <a href="/u/1323320/articles" target="_blank" class="js-article-words l"> |
| 贡献 <span></span> 字 |
| </a> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="other_article js-other_article clearfix"> |
| <div class="title l">作者相关文章</div> |
| <div class="more r"> |
| <a href="/u/1323320/articles" target="_blank">更多<i class="imv2-arrow2_r"></i></a> |
| </div> |
| <ul class="l"> |
| |
| <li class="article-item clearfix"> |
| <i class="imv2-shouji l"></i> |
| <a href="/article/289479" class="l" target="_blank"> |
| SpringBoot配置大全总结(一) |
| </a> |
| </li> |
| |
| <li class="article-item clearfix"> |
| <i class="imv2-shouji l"></i> |
| <a href="/article/8879" class="l" target="_blank"> |
| 《将来的你,一定会感谢现在拼命写代码的你》 |
| </a> |
| </li> |
| |
| <li class="article-item clearfix"> |
| <i class="imv2-shouji l"></i> |
| <a href="/article/14710" class="l" target="_blank"> |
| 你的付出,时光不会辜负,梦想总会实现 |
| </a> |
| </li> |
| |
| |
| </ul> |
| </div> |
| |
| |
| |
| <div class="column_recommend js-column_recommend"> |
| <div class="title"> |
| 慕课专栏 |
| <a href="/read" target="_blank" class="more">更多<i class="imv2-arrow2_r"></i></a> |
| </div> |
| <ul> |
| <li class="clearfix"> |
| <a href="/read/40?mc_marking=44ee00c1743acd07efc164e2dd6e79c4&mc_channel=sjxqzl" target="_blank"> |
| <div class="img l" style="background-image:url(//img3.sycdn.imooc.com/5d22a6be0001d12805400720.jpg)"> |
|
|
| </div> |
| </a> |
| <div class="text_con l"> |
| <a href="/read/40?mc_marking=44ee00c1743acd07efc164e2dd6e79c4&mc_channel=sjxqzl" target="_blank"> |
| <p class="title">零基础实现微信电商小程序开发</p> |
| </a> |
| <div class="info"> |
| <span>共50小节</span> |
| <i class="imv2-dot_samll"></i> |
| <span>814人已购买</span> |
| </div> |
| <div class="price_con clearfix"> |
| <a href="//order.imooc.com/pay/confirm/goods_ids/1610"> |
| <div class="goBuy r">马上订阅</div> |
| </a> |
|
|
|
|
| <p class="ori l">¥ 68.00</p> |
|
|
| </div> |
| </div> |
| </li> |
| <li class="clearfix"> |
| <a href="/read/27?mc_marking=44ee00c1743acd07efc164e2dd6e79c4&mc_channel=sjxqzl" target="_blank"> |
| <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5cd10384000145f305400720.jpg)"> |
|
|
| </div> |
| </a> |
| <div class="text_con l"> |
| <a href="/read/27?mc_marking=44ee00c1743acd07efc164e2dd6e79c4&mc_channel=sjxqzl" target="_blank"> |
| <p class="title">用技术人的眼光看世界 • 程序员技术指北</p> |
| </a> |
| <div class="info"> |
| <span>共52小节</span> |
| <i class="imv2-dot_samll"></i> |
| <span>3385人已购买</span> |
| </div> |
| <div class="price_con clearfix"> |
| <a href="//order.imooc.com/pay/confirm/goods_ids/1480"> |
| <div class="goBuy r">马上订阅</div> |
| </a> |
|
|
|
|
| <p class="ori l">¥ 99.00</p> |
|
|
| </div> |
| </div> |
| </li> |
| </ul> |
| </div> |
|
|
| <div id="articleDetailRight"></div> |
| |
| <div class="related_lessons js-related_lessons"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </div> |
| |
| </div> |
| </div> |
| <div class="bottom-fixed js-bottom-fixed hide"> |
| <ul class="bottom-wrap clearfix"> |
| |
| <li class="praise-box l"> |
| <button id="js-praise-bottom"><span class="imv2-thumb_up"></span></button> |
| <span class="praise-num">10</span> |
| </li> |
| |
| <li class="icon-warp l"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'pl'])" data-track="pl-1-1" href="#comment" class="icon-nav imv2-chat_bubble" title="评论"></a> |
| <span class="comment-num">评论</span> |
| </li> |
| <li class="icon-warp l"> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'sc'])" data-track="sc-1-1" data-id="16621" href="javascript:" class="js-follow icon-nav icon-star2 " title="收藏"></a> |
| <span>收藏</span> |
| </li> |
| <li class="input l js-showcommentModal">共同学习,写下你的评论</li> |
| <li class="icon-warp2 l"> |
| <a class="js-forward-btn imv2-forward1 icon-nav2" href="#"> |
| </a> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'wx'])" data-track="letfshare-1-1" href="#" class="bds_weixin icon-nav2 icon-share-weichat share-icon" data-cmd="weixin" title="分享到微信"></a> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'wb'])" data-track="letfshare-1-2" href="#" class="bds_tsina icon-nav2 icon-share-weibo share-icon" data-cmd="tsina" title="分享到新浪微博"></a> |
| <a onclick="_hmt.push(['_trackEvent', 'sjtj_left', 'share', 'qq'])" data-track="letfshare-1-3" href="#" class="bds_qzone icon-nav2 icon-share-qq share-icon" data-cmd="qzone" title="分享到QQ空间"></a> |
| </li> |
| </ul> |
| </div> |
|
|
|
|
|
|
|
|
| <div class="hide"> |
| <input type="hidden" data-pic="58b2c7b700011c2303080260" id='js-share-img'> |
| <input type="hidden" data-pic="//img1.sycdn.imooc.com/5e8fdfab0001c94c09600960-100-100.jpg" id='js-img-author'> |
| </div> |
| <div class="r"></div> |
|
|
| </div> |
|
|
|
|
| <div id="J_GotoTop" class="elevator"> |
| <a href="/user/feedback" class="elevator-msg" target="_blank"> |
| <i class="icon-feedback"></i> |
| <span class="">意见反馈</span> |
| </a> |
| <a href="//order.imooc.com/pay/sharegoods" class="elevator-dist" style="display: none;" target="_blank"> |
| <i class=""></i> |
| <span class="">分销返利</span> |
| </a> |
| |
| |
| |
| |
| <a href="/help" class="elevator-faq" target="_blank"> |
| <i class="icon-ques"></i> |
| <span class="">帮助中心</span> |
| </a> |
| <a href="//www.imooc.com/mobile/app" target="_blank" class="elevator-app" > |
| <i class="icon-appdownload"></i> |
| <span class="">APP下载</span> |
| <div class="elevator-app-box"></div> |
| </a> |
| <a href="javascript:void(0)" class="elevator-weixin no-goto" id="js-elevator-weixin" > |
| <i class="icon-wxgzh"></i> |
| <span class="">官方微信</span> |
| <div class="elevator-weixin-box"></div> |
| </a> |
| <a href="javascript:void(0)" class="elevator-top no-goto" style="display:none" id="backTop"> |
| <i class="icon-up2"></i> |
| <span class="">返回顶部</span> |
| </a> |
| </div> |
|
|
|
|
| <div id="globalRightFloat"></div> |
|
|
|
|
|
|
|
|
|
|
|
|
| <script type="text/javascript" charset="utf-8" src="/static/lib/ueditor/ueditor.final.min.js"></script> |
|
|
|
|
| |
| <script type="text/javascript" src="/static/lib/util/error.js"></script> |
| <script src="/passport/static/scripts/ssologin.js?v=2.0"></script> |
| <script type="text/javascript" src="/static/sea-modules/seajs/seajs/2.1.1/sea.js"></script> |
| <script type="text/javascript" src="/static/sea_config.js?v=202008282315"></script> |
| <script type="text/javascript">seajs.use("/static/page/"+OP_CONFIG.module+"/"+OP_CONFIG.page);</script> |
|
|
| <script type="text/javascript" src="/static/page/common/dist-zhuge.js"></script> |
|
|
| <script type="text/javascript">seajs.use("/static/page/common/advertiseCheck.js");</script> |
|
|
| <script> |
| //动态加载advertisementReportjs |
|
|
| var checkJQ = function(){ |
| // console.log(typeof jQuery) |
| if(typeof jQuery != 'undefined') { |
| clearInterval(timer); |
| var scr = document.createElement('script'); |
| scr.type="text/javascript"; |
| scr.src="/static/page/common/advertisementReport.js"; |
| document.body.appendChild(scr); |
|
|
| } |
| } |
| var timer = setInterval(checkJQ,1000); |
|
|
| </script> |
|
|
|
|
| <script src="//moco.imooc.com/captcha/script/captcha.min.js?v=1.0"></script> |
| <script> |
| // 处理长篇幅文章部分显示 |
| var hideArticleInterval, htmlFilterInterval; |
| (function() { |
| hideArticleInterval = setInterval(function() { |
| contentEl = document.querySelector('.detail-content'); |
| var height = contentEl.offsetHeight; |
| if(contentEl && height > 0) { |
| clearInterval(hideArticleInterval); |
| hideArticleInterval = null; |
| if(height > 3000) { |
| contentEl.className += ' long-content'; |
| } |
| document.querySelector('.showMore span').addEventListener('click', function() { |
| $('.detail-content').removeClass('long-content'); |
| }); |
| } |
| },5); |
| htmlFilterInterval = setInterval(function() { |
| var articleBox = document.getElementById('article_content'); |
| if(window.$ && $.fn.lazyload && articleBox) { |
| clearInterval(htmlFilterInterval); |
| htmlFilterInterval = null; |
| $(articleBox).replaceWith(articleEl); |
| if(twemoji){ |
| twemoji.parse(document.body); |
| } |
| $('img.lazyload').lazyload({ |
| load: function() { |
| $(this).removeClass('lazyload'); |
| } |
| }); |
| } |
| },5); |
| }()); |
| </script> |
| <script> |
| window.onload = function() { |
| zhuge.track('ContentPage', { |
| 'Category': '手记', |
| 'Name': 'NoSQL数据库之-------Redis(二)', |
| 'CID': '16621', |
| 'Direction': '后端开发', |
| 'Price': 0 |
| }); |
| } |
| </script> |
|
|
| <div class="tipoff-block js-tipoff-block"></div> |
| <div class="tipoff-box js-tipoff-box"> |
| <div class="tipoff-top-box clearfix"> |
| <p class="l tipoff-title">举报</p> |
| <span class="r tipoff-close-btn icon-close2 js-tipoff-close"></span> |
| </div> |
| <div class="tipoff-type-box js-tipoff-typebox clearfix"> |
| <div class="tipoff-loading"> |
| <div class="bounce1"></div> |
| <div class="bounce2"></div> |
| <div class="bounce3"></div> |
| </div> |
| </div> |
| <div class="tipoff-content"> |
| <textarea name="tipoff-content" class="tipoff-desc js-tipoff-desc" placeholder="写下举报理由"></textarea> |
| <div class="tipoff-text"><span class="js-tipoff-text">0</span>/150</div> |
| </div> |
| <div class="tipoff-btn-box clearfix"> |
| <div class="r tipoff-submit-btn js-tipoff-submit" data-tipofftype="">提交</div> |
| <div class="r tipoff-cancel-btn js-tipoff-close">取消</div> |
| </div> |
| </div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| <div style="display: none"> |
| <script type="text/javascript"> |
| var _hmt = _hmt || []; |
| (function() { |
| var hm = document.createElement("script"); |
| hm.src = "https://hm.baidu.com/hm.js?f0cfcccd7b1393990c78efdeebff3968"; |
| var s = document.getElementsByTagName("script")[0]; |
| s.parentNode.insertBefore(hm, s); |
| })(); |
| (function (d) { |
| window.bd_cpro_rtid="rHT4P1c"; |
| var s = d.createElement("script");s.type = "text/javascript";s.async = true;s.src = location.protocol + "//cpro.baidu.com/cpro/ui/rt.js"; |
| var s0 = d.getElementsByTagName("script")[0];s0.parentNode.insertBefore(s, s0); |
| })(document); |
| </script> |
| <script> |
| (function(){ |
| var bp = document.createElement('script'); |
| var curProtocol = window.location.protocol.split(':')[0]; |
| if (curProtocol === 'https') { |
| bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; |
| }else { |
| bp.src = 'http://push.zhanzhang.baidu.com/push.js'; |
| } |
| var s = document.getElementsByTagName("script")[0]; |
| s.parentNode.insertBefore(bp, s); |
| })(); |
| </script> |
| </div> |
| </body> |
| </html> |
|
|