1. package com.yh;
  2.  
  3. import org.junit.After;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6. import redis.clients.jedis.Jedis;
  7. import redis.clients.jedis.params.SetParams;
  8.  
  9. import java.util.HashMap;
  10. import java.util.Map;
  11.  
  12. public class TestRedis {
  13.  
  14. private Jedis jedis;
  15.  
  16. @Before
  17. public void init() {
  18. //连接本地的 Redis 服务
  19. jedis = new Jedis("localhost");
  20. System.out.println("连接成功");
  21. }
  22.  
  23. @Test
  24. public void testList() { // 有序,链表结构
  25. System.out.println(jedis.lpush("list1", "v1", "v2", "v3", "v4")); // 4 从左边添加
  26. System.out.println(jedis.rpush("list2", "v1", "v2", "v3", "v4")); // 4 从右边添加
  27. System.out.println(jedis.lrange("list1", 0, -1)); // [v4, v3, v2, v1]
  28. System.out.println(jedis.lrange("list2", 0, -1)); // [v1, v2, v3, v4]
  29. System.out.println(jedis.rpop("list1")); // v1 删除最后一个元素
  30. System.out.println(jedis.lpop("list2")); // v1 删除第一个元素
  31. }
  32.  
  33. @Test
  34. public void testSet() { // 无序,不可重复
  35. jedis.sadd("set1", "v1", "v2", "v3", "v4");
  36. System.out.println(jedis.smembers("set1")); // 获取所有成员
  37. System.out.println(jedis.sismember("set1", "v1")); // 判断是否存在
  38.  
  39. jedis.sadd("set2", "v1", "v3", "v5", "v7");
  40. System.out.println(jedis.sdiff("set1", "set2")); // 输出第一个有,后面没有的(差集)
  41. System.out.println(jedis.sinter("set1", "set2")); // 输出两个都有的(交集)
  42. System.out.println(jedis.sunion("set1", "set2")); // 输出两个总和(并集)
  43. }
  44.  
  45. @Test
  46. public void testZSet() { // 有序集合
  47. Map<String, Double> map = new HashMap<>();
  48. map.put("k1", 20d);
  49. map.put("k2", 30d);
  50. map.put("k3", 15d);
  51. map.put("k4", 25d);
  52. System.out.println(jedis.zadd("zset", map)); // 4
  53. System.out.println(jedis.zrange("zset", 0, -1)); // [k3, k1, k4, k2]
  54. System.out.println(jedis.zrangeWithScores("zset", 0, -1)); // [[k3,15.0], [k1,20.0], [k4,25.0], [k2,30.0]]
  55. }
  56.  
  57. @Test
  58. public void testHash(){
  59. Map<String, String> map = new HashMap<>();
  60. map.put("k1", "v1");
  61. map.put("k2", "v2");
  62. map.put("k3", "v3");
  63. System.out.println(jedis.hset("hash", "","")); // 4
  64. System.out.println(jedis.hkeys("hash")); // [k3, k1, k4, k2]
  65. System.out.println(jedis.hvals("hash")); // [k3, k1, k4, k2]
  66. System.out.println(jedis.hgetAll("hash")); // [k3, k1, k4, k2]
  67. }
  68.  
  69. @Test
  70. public void testString() {
  71. System.out.println(jedis.set("k1", "v1")); // OK
  72. System.out.println(jedis.get("k1")); // v1
  73. System.out.println(jedis.del("k1")); // 1
  74. System.out.println(jedis.append("k1", "v12")); // 3 key不存在时,append相当于set
  75. System.out.println(jedis.append("k1", "v123")); // 7
  76. System.out.println(jedis.get("k1")); // v12v123
  77. System.out.println(jedis.strlen("k1")); // 7
  78. System.out.println(jedis.mset("k1", "v1", "k2", "v2", "k3", "v3")); // OK 和逐条添加的不同点在于这是原子性操作
  79. System.out.println(jedis.mget("k1", "k2", "k3")); // [v1,v2,v3]
  80. System.out.println(jedis.setnx("k1", "v4")); // 0 先判断key是否存在,存在则不创建
  81. System.out.println(jedis.setex("k1", 66, "v4")); // OK 增加过期时间(秒)
  82. System.out.println(jedis.ttl("k1")); // 返回距离过期的剩余时间
  83.  
  84. SetParams setParams = new SetParams(); // 相当于设置一个规范,可应用到其他键值对
  85. setParams.ex(100); // 过期时间100s
  86. setParams.nx(); // 创建键值对之前先判断是否存在,存在则不创建
  87. System.out.println(jedis.set("k1", "v1", setParams));
  88. }
  89.  
  90. @Test
  91. public void testKey() {
  92. System.out.println(jedis.keys("*")); // 查找所有key,参数为正则表达式,不推荐使用
  93. System.out.println(jedis.exists("k1")); // 判断key是否存在
  94. System.out.println(jedis.expire("k1", 60)); // 设值过期时间
  95. System.out.println(jedis.incr("count")); // 相当于++
  96. System.out.println(jedis.decr("count")); // 相当于--
  97. System.out.println(jedis.incrBy("count", 2)); // 相当于+=2
  98. System.out.println(jedis.decrBy("count", 2)); // 相当于-=2
  99. }
  100.  
  101. @After
  102. public void close() {
  103. jedis.close();
  104. }
  105.  
  106. }

通过Jedis操作Redis的更多相关文章

  1. Jedis操作Redis数据库

    添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...

  2. Jedis操作Redis

    Jedis操作Redis的常用封装方法 @Resource(name="jedispool") private JedisPool pool=null; /** * 设置缓存对象过 ...

  3. 四、Jedis操作Redis

    前言:  原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...

  4. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  5. jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...

  6. Jedis操作Redis技巧详解

    对于Redis的部署模式有两种,单机模式 和 集群模式.因此,本文的介绍也从这两个方面进行介绍.众所周知,Jedis是最著名的Redis java客户端操作类库,几乎支持所有的Redis操作.本文就是 ...

  7. Java中Jedis操作Redis与Spring的整合

    Redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop. ...

  8. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  9. Java中使用Jedis操作Redis(转载)

    整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...

  10. (转)Java中使用Jedis操作Redis

    转自http://www.cnblogs.com/liuling/p/2014-4-19-04.html 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://file ...

随机推荐

  1. sqlalchemy flush commit

    https://segmentfault.com/q/1010000000698181 flush 将sql发送到内存 commit 真正提交

  2. JSON实现序列化dump和dumps方法,JSON实现反序列化loads和load方法

    通过文件操作,我们可以将字符串写入到一个本地文件.但是,如果是一个对象(例如列表.字典.元组等),就无 法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里. 设计一套协议,按照某种 ...

  3. Go语言核心36讲(Go语言实战与应用七)--学习笔记

    29 | 原子操作(上) 我们在前两篇文章中讨论了互斥锁.读写锁以及基于它们的条件变量,先来总结一下. 互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的 goroutine 只有一个.读写 ...

  4. 通过python来获取网页状态

    #!/usr/bin/python import sys,httplibfrom optparse import OptionParserusageString = "Usage: %pro ...

  5. Go语言核心36讲(Go语言实战与应用八)--学习笔记

    30 | 原子操作(下) 我们接着上一篇文章的内容继续聊,上一篇我们提到了,sync/atomic包中的函数可以做的原子操作有:加法(add).比较并交换(compare and swap,简称 CA ...

  6. [hdu7034]Array

    令$f(a)_{i}=\min_{i<j\le n,a_{i}=a_{j}}j$​​(特别的,若不存在$j$​​则令$f(a)_{i}=n+1$​​),则有以下性质: 1.对于$b_{i}$​​ ...

  7. [uoj272]石家庄的工人阶级队伍比较坚强

    假设$x,y\in \{0,1,2\}$,则$x$能赢$y$(根据题中定义)当且仅当$x-y\equiv 1(mod\ 3)$ 定义$\ominus$为两数3进制下不退位的减法,$S_{x}$表示$x ...

  8. [atAGC001F]Wide Swap

    结论:排列$p'_{i}$可以通过排列$p_{i}$得到当且仅当$\forall 1\le i<j<i+k,(p_{i}-p_{j})(p'_{i}-p'_{j})>0$ 证明:构造 ...

  9. .NET Core中的鉴权授权正确方式(.NET5)

    一.简介 前后端分离的站点一般都会用jwt或IdentityServer4之类的生成token的方式进行登录鉴权.这里要说的是小项目没有做前后端分离的时站点登录授权的正确方式. 一.传统的授权方式 这 ...

  10. vip视频解析保存

    无广告通用:https://vip.52jiexi.top/?url= 腾讯直解 无广告解析:https://jx.lfeifei.cn/?url= 无广告解析:https://api.steak51 ...