首页 / REDIS / redis-key2
redis-key2
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了redis-key2,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4801字,纯文字阅读大概需要7分钟。
内容图文
![redis-key2](/upload/InfoBanner/zyjiaocheng/1104/47779fed66bb4a4a96f215803baa614d.jpg)
package com.ztest.redis; import java.util.List; import redis.clients.jedis.Jedis; import com.sun.istack.internal.logging.Logger; import com.ztest.redis.util.JedisConnectionUtil; /** * * @author yafei.lv *redis异步??? */ public class JedisKeyTestTwo { private final static Logger logger = Logger.getLogger(JedisKeyTestOne.class); publicstaticvoid keyTest(){ Jedis jedis = null; try{ jedis = JedisConnectionUtil.initJedis(); // 0.flushDb 和 flush all /* 一个端口一个库? * flush all : 清空整个 Redis 服务器的数据 (删除所有数据库的所有 key )。此命令从不失败。时间复杂度: 尚未明确.返回值: 总是返回 OK 。 * flush db : 清空当前数据库中的所有 key。此命令从不失败。时间复杂度: O(1)。返回值: 总是返回 OK 。 */ jedis.flushDB(); // 1.migrate 将key和value原子性地从当前实例,传送到目标实例的指定库上,一旦传送成功,key保证会出现在目示实例上,当前会被删除 //是原子操作、阻塞 /* * @Redis命令:migrate host port key destiontion-db timeout * * @例子:把6379的redis里面的key移到6378里面 * migrate 127.0.0.1 6378 lvyf 0(库名) 1000 */// 2.move 将当前数据库key移动到指定数据库中,如果当前数据库 (源数据库) 和给定数据库 (目标数据库) 有相同名字的给定 key ,或者 key 不存在于当前 //数据库,那么 MOVE 没有任何效果 /* * @Redis命令: move key db * 时间复杂度: O(1) 返回值: 移动成功返回 1 ,失败则返回 0 @例子:move lvyf 0 */ jedis.set("lvyf1", "123"); jedis.move("lvyf1",1); jedis.flushAll(); // 3. object OBJECT 命令允许从内部察看给定 key 的 Redis 对象 jedis.set("lvyf","1q23"); jedis.objectEncoding("lvyf"); Long count = jedis.objectRefcount("lvyf"); logger.info("obj==" + jedis.get("lvyf")+",count=="+count); // 4. persist 移除key的存活时间 /* * @Redis命令 persist lvyf */ jedis.expire("lvyf", 5); jedis.persist("lvyf"); // 5. pexpire 给key设置存活时间,单位毫秒 /* @Redis命令 pexpire lvyf 1000 时间段 */// 6. /* * PEXPIREAT key milliseconds-timestamp 这个命令和EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像EXPIREAT 那样,以秒为单位 @Redis命 PEXPIREAT lvyf 140999887766655 ,某一时间点 */// 7. pttl 它以毫秒为单位返回 key 的剩余生存时间 /* * @Redis命令 pttl lvyf */// 8. randomkey 从当前数据库中随机返回 (不删除) 一个 key /* * @Redis命令 randomkey */ jedis.flushAll(); jedis.set("orange", "1"); jedis.set("apple", "2"); jedis.set("banana", "3"); logger.info("randomKey==" + jedis.randomKey()); // 9. rename 修改key /* * @Redis命令: rename key newkey * 当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。 当 newkey 已经存在时,RENAME 命令将覆盖旧值。 * 从当前数据库中随机返回 (不删除) 一个 key */ jedis.flushAll(); jedis.set("1", "orange"); jedis.set("2","apple"); logger.info("修改前 key是2的value==" + jedis.get("2")); String result = jedis.rename("1", "2"); logger.info("修改结果==" + result + "修改后key是2的value==" + jedis.get("2")); // 10.renamenx 当且仅当newkey 不存在时,才会修改 /* * @Redis命令 renamenx lvyf lvyf1 * 时间复杂度: O(1) 返回值: 修改成功时,返回 1 。 如果 newkey 已经存在,返回 0 。 */ jedis.flushAll(); jedis.set("1", "orange"); jedis.set("2","apple"); logger.info("修改前 key是2的value==" + jedis.get("2")); Long result1 = jedis.renamenx("1", "3"); logger.info("修改结果==" + result1 + "修改后key是2的value==" + jedis.get("2") + ",3=="+jedis.get("3")+",1=="+jedis.get("1")); // 11.restore /* * @Redis命令 * RESTORE key ttl serialized-value * * 反序列化给定的序列化值,并将它和给定的 key 关联。 参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间 返回值: 如果反序列化成功那么返回 OK ,否则返回一个错误。 DUMP greeting 再看看!!! \x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde" # 将序列化数据 RESTORE 到另一个键上面 RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde" OK */// 12. ttl 返回key的剩余生存时间 秒jedis.flushAll(); jedis.set("lvyf", "123"); Long timeNoExpire = jedis.ttl("lvyf"); Long timeNotKeyExist = jedis.ttl("lvyafei1"); logger.info("timeNoExpire=="+timeNoExpire+",timeNotKeyExist=="+timeNotKeyExist); jedis.set("lv", "123"); jedis.expire("lv", 10); Thread.currentThread(); // Thread.sleep(1000*3); Long rightTTl = jedis.ttl("lv"); logger.info("rightTTl=="+rightTTl); /* * 13.type 返回key所存value类型 * TYPE key 返回 key 所储存的值的类型。 可用版本: >= 1.0.0 时间复杂度: O(1) 返回值: none (key 不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表) */ jedis.flushAll(); jedis.set("lvyf", "123"); String type = jedis.type("lvyf"); logger.info("type=="+type+",not=="+jedis.type("123")); /* * 14. sort 对指定key的value排序 * * SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination] 返回或保存给定列表、集合、有序集合 key 中经过排序的元素。 排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。 时间复杂度: O(N+M*log(M)),N 为要排序的列表或集合内的元素数量,M 为要返回的元素数量。 如果只是使用SORT 命令的 GET 选项获取数据而没有进行排序,时间复杂度 O(N)。 返回值: 没有使用 STORE 参数,返回列表形式的排序结果。 使用 STORE 参数,返回排序结果的元素数量。 */ jedis.lpush("cost", "10","5","20","3"); List<String> sortResult = jedis.sort("cost"); for(String str : sortResult){ logger.info("str=="+ str); } /* * 15. SCAN * 命令是一个基于游标的迭代器( cursor based iterator):SCAN 命令每次被调用之后,都会向用户返 回一个新的游标,用户在下次迭代时需要使用这个新游标作为SCAN 命令的游标参数,以此来延续之前的 迭代过程。 当SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代,而当服务器向用户返回值为 0 的游 标时,表示迭代已结束 */// for(int i = 0 ; i < 20 ; i++){ // jedis.set(i+"", i+""); // } }catch(Exception e){ e.printStackTrace(); }finally{ if(jedis != null){ JedisConnectionUtil.returnJedis(jedis); //回收} } } publicstaticvoid main(String[] args) { keyTest(); } }
原文:http://www.cnblogs.com/fubaizhaizhuren/p/5578346.html
内容总结
以上是互联网集市为您收集整理的redis-key2全部内容,希望文章能够帮你解决redis-key2所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】