发布时间:2020/08/31
| <!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> | |
| <!-- <li><a href="//job.imooc.com" target="_self">猿聘<i class="icn-new"></i></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> | |
| <!-- 推荐end --> | |
| <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> | |
| <!-- 分享&收藏 end --> | |
| <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> | |
| <!-- 面包屑end --> | |
| <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> | |
| <!-- 推荐end --> | |
| </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> | |
| <!-- 评论框end --> | |
| <!-- 评论 --> | |
| <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> --> | |
| <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> | |
| <!-- 作者信息end --> | |
| <!-- 作者相关文章 --> | |
| <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"> | |
| <!-- 产品要求最多3个 --> | |
| <li class="article-item clearfix"> | |
| <i class="imv2-shouji l"></i> | |
| <a href="/article/289479" class="l" target="_blank"> | |
| SpringBoot配置大全总结(一) | |
| </a> | |
| </li> | |
| <!-- 产品要求最多3个 --> | |
| <li class="article-item clearfix"> | |
| <i class="imv2-shouji l"></i> | |
| <a href="/article/8879" class="l" target="_blank"> | |
| 《将来的你,一定会感谢现在拼命写代码的你》 | |
| </a> | |
| </li> | |
| <!-- 产品要求最多3个 --> | |
| <li class="article-item clearfix"> | |
| <i class="imv2-shouji l"></i> | |
| <a href="/article/14710" class="l" target="_blank"> | |
| 你的付出,时光不会辜负,梦想总会实现 | |
| </a> | |
| </li> | |
| <!-- 产品要求最多3个 --> | |
| <!-- 产品要求最多3个 --> | |
| </ul> | |
| </div> | |
| <!-- 作者相关文章end --> | |
| <!-- 专栏推荐手记详情右侧 --> | |
| <!--推荐专栏 手记首页右侧和手记详情页右侧使用此模块--> | |
| <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 class="title">相关课程</div> | |
| <ul> | |
| <li class="lesson-item clearfix"> | |
| <div class="img_con l"> | |
| <img src=""> | |
| <p class="root">实战</p> | |
| </div> | |
| <div class="text_con l clearfix"> | |
| <a class="name l"> | |
| 12346541122263牛逼 | |
| </a> | |
| <p class="price l"> | |
| ¥122 | |
| </p> | |
| <div class="dot l"> | |
| <i class="imv2-dot_samll"></i> | |
| </div> | |
| <p class="type l"> | |
| 高级 | |
| </p> | |
| <div class="dot l"> | |
| <i class="imv2-dot_samll"></i> | |
| </div> | |
| <p class="people l"> | |
| <i class="imv2-set-sns"></i> | |
| <span>1234</span> | |
| </p> | |
| </div> | |
| </li> | |
| <li class="lesson-item clearfix"> | |
| <div class="img_con l"> | |
| <img src=""> | |
| <p class="root">路径</p> | |
| </div> | |
| <div class="text_con l clearfix"> | |
| <a class="name l"> | |
| 12346541122263牛逼 | |
| </a> | |
| <p class="price l"> | |
| ¥122 | |
| </p> | |
| <div class="dot l"> | |
| <i class="imv2-dot_samll"></i> | |
| </div> | |
| <p class="steps l"> | |
| 4步骤/76门课 | |
| </p> | |
| <div class="dot l"> | |
| <i class="imv2-dot_samll"></i> | |
| </div> | |
| <p class="people l"> | |
| <i class="imv2-set-sns"></i> | |
| <span>1234</span> | |
| </p> | |
| </div> | |
| </li> | |
| <li class="lesson-item clearfix"> | |
| <div class="img_con l"> | |
| <img src=""> | |
| </div> | |
| <div class="text_con l clearfix"> | |
| <a class="name l"> | |
| 12346541122263牛逼 | |
| </a> | |
| <p class="type l"> | |
| 高级 | |
| </p> | |
| <div class="dot l"> | |
| <i class="imv2-dot_samll"></i> | |
| </div> | |
| <p class="people l"> | |
| <i class="imv2-set-sns"></i> | |
| <span>1234</span> | |
| </p> | |
| </div> | |
| </li> | |
| </ul> --> | |
| </div> | |
| <!-- 相关课程end --> | |
| </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> | |
| <!-- 推荐end --> | |
| <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="//www.imooc.com/act/invite" class="elevator-dist" 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--> | |
| <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> | |
纵购云集 五金电气建材采购服务平台|
粤公网安备 44060602001650号|粤ICP备14093582号|增值电信业务经营许可证:B2-20160109
2017 All Rights Reserved. 佛山市纵购电子商务有限公司|平台规则|服务条款|隐私政策|营业执照|违规订单处理行为规则
微信公众号400-930-2128