2312321

发布时间: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 = "&lt;p&gt;上文(&lt;a href=&quot;http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例&lt;/a&gt;。&lt;br /&gt;\nRedis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。&lt;br /&gt;\n下面将会给出实例:&lt;br /&gt;\n1.Java操作Redis键(key)&lt;/p&gt;\n&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;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(&quot;127.0.0.1&quot;);\n        System.out.println(&quot;redis本地服务连接成功!&quot;);\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(&quot;redis&quot;));\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(&quot;\\ninfo-----&amp;gt;&quot;+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}&lt;/code&gt;&lt;/pre&gt;\n&lt;p&gt;2.Java操作Redis列表(list)&lt;/p&gt;\n&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;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(&quot;localhost&quot;);\n        System.out.println(&quot;redis本地服务连接成功!&quot;);\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(&quot;SQL&quot;, &quot;Redis&quot;);\n        jedis.lpush(&quot;SQL&quot;, &quot;Mongodb&quot;);\n        jedis.lpush(&quot;SQL&quot;, &quot;Mysql&quot;);\n        jedis.linsert(&quot;SQL&quot;, BinaryClient.LIST_POSITION.BEFORE, &quot;MySql&quot;, &quot;java&quot;);\n        jedis.rpush(&quot;SQL&quot;, &quot;SqlServer&quot;);\n        jedis.rpush(&quot;SQL&quot;, &quot;Oracle&quot;);\n\n        jedis.linsert(&quot;SQL&quot;, BinaryClient.LIST_POSITION.BEFORE, &quot;MySql&quot;, &quot;java&quot;);\n        // Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。\n        System.out.println(jedis.lpushx(&quot;SQL&quot;, &quot;Redis1&quot;));\n        // 获取存储的数据并输出\n        List&amp;lt;String&amp;gt; list = jedis.lrange(&quot;SQL&quot;, 0, -1);\n        for (int i = 0; i &amp;lt; list.size(); i++) {\n            System.out.println(&quot;Stored string in redis:: &quot; + list.get(i));\n        }\n\n        // 获得列表的长度\n        System.out.println(&quot;redis列表长度为:&quot; + jedis.llen(&quot;SQL&quot;));\n        // 删除列表中的元素\n        jedis.del(&quot;SQL&quot;);\n        System.out.println(&quot;删除了redis列表!&quot;);\n        // 获得列表的长度\n        System.out.println(&quot;redis列表长度为:&quot; + jedis.llen(&quot;SQL&quot;));\n        // 列表下标从0开始\n        System.out.println(&quot;redis列表下标为5的元素是:&quot; + jedis.lindex(&quot;SQL&quot;, 5));\n        /*\n         * Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0\n         * 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2\n         * 表示列表的倒数第二个元素,以此类推。\n         */\n        System.out.println(jedis.ltrim(&quot;SQL&quot;, 0, 4));\n\n    }\n\n}&lt;/code&gt;&lt;/pre&gt;\n&lt;p&gt;3.Java操作Redis集合(set)&lt;/p&gt;\n&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;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(&quot;127.0.0.1&quot;,6379);\n\n        //set方法用于向redis数据库中添加设置数据\n        jedis.set(&quot;k1&quot;, &quot;v1&quot;);\n        jedis.set(&quot;k2&quot;, &quot;v2&quot;);\n        jedis.set(&quot;k3&quot;, &quot;v3&quot;);\n        //get方法用于获取某个键所对应的值\n        System.out.println(jedis.get(&quot;k3&quot;));\n        //del方法用于删除某个键所对应的值\n        System.out.println(jedis.del(&quot;k1&quot;));\n        //getSet方法用户获取某个键所对应的值,键不存在,返回null;键存在,返回对应的值\n        System.out.println(jedis.getSet(&quot;k4&quot;, &quot;v4&quot;));\n        /*getrange(key, startOffset, endOffset)方法用于获取存在在key中字符串的子字符串\n         字符串的截取范围由start和end两个偏移量决定\n        */\n        System.out.println(jedis.getrange(&quot;k2&quot;, 1, -1));\n        //lpop方法用于移除并返回列表的第一个元素\n        System.out.println(jedis.lpop(&quot;k1&quot;));\n        //rpop方法用于移除并返回列表的最后一个元素\n        System.out.println(jedis.rpop(&quot;k5&quot;));\n        //返回集合的长度\n        Set&amp;lt;String&amp;gt; sets = jedis.keys(&quot;*&quot;);\n        System.out.println(sets.size());\n\n    }\n\n}&lt;/code&gt;&lt;/pre&gt;\n&lt;p&gt;4.Java操作Redis字符串(String)&lt;/p&gt;\n&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;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(&quot;127.0.0.1&quot;);\n        System.out.println(&quot;redis服务连接成功!&quot;);\n\n        //设置redis字符串数据\n        jedis.set(&quot;type&quot;, &quot;string&quot;);\n        //获取存储的数据并输出\n        System.out.println(&quot;redis存储的值为:&quot;+jedis.get(&quot;type&quot;));\n\n    }\n\n}&lt;/code&gt;&lt;/pre&gt;\n&lt;p&gt;5.Java 操作Redis排序&lt;/p&gt;\n&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;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(&quot;127.0.0.1&quot;,6379);\n        //权限认证\n        //jedis.auth(&quot;admin&quot;);\n    }\n\n    @Test\n    public void test() throws InterruptedException{\n        //jedis排序\n        //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)  \n        jedis.del(&quot;a&quot;);   //先清除数据,在加入数据进行测试\n        jedis.rpush(&quot;a&quot;, &quot;1&quot;);\n        jedis.rpush(&quot;a&quot;, &quot;6&quot;);\n        jedis.rpush(&quot;a&quot;, &quot;4&quot;);\n        jedis.rpush(&quot;a&quot;, &quot;2&quot;);\n        jedis.rpush(&quot;a&quot;, &quot;5&quot;);\n        jedis.rpush(&quot;a&quot;, &quot;3&quot;);\n        //排序前\n        System.out.println(&quot;排序前:&quot;+jedis.lrange(&quot;a&quot;, 0, -1));\n        //排序\n        System.out.println(&quot;排序:&quot;+jedis.sort(&quot;a&quot;));\n        //排序后\n        System.out.println(&quot;排序后:&quot;+jedis.lrange(&quot;a&quot;, 0, -1));\n    }\n}&lt;/code&gt;&lt;/pre&gt;\n&lt;p&gt;更多实例代码,在此不再一一列举,感兴趣的朋友,实例代码见:&lt;br /&gt;\n&lt;a href=&quot;https://github.com/JavaCodeMood/redis1&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://github.com/JavaCodeMood/redis1&lt;/a&gt;&lt;/p&gt;\n&lt;p&gt;多谢各位朋友的支持!&lt;/p&gt;";

// 为html反转码

article_content = article_content.replace(/\&lt\;/g, "<").replace(/\&gt\;/g, ">").replace(/\&amp\;/g, "&").replace(/\&quot\;/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-----&gt;"+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&lt;String&gt; list = jedis.lrange("SQL", 0, -1);

for (int i = 0; i &lt; 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&lt;String&gt; 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>



热点资讯
微信公众号400-930-2128