Jedis

柔光的暖阳◎ 2022-03-01 13:14 337阅读 0赞

一、键操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70

二、字符串操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 1

三、整数和浮点数操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 2

四、列表(List)操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 3

五、集合(Set)操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 4

六、哈希(Hash)操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 5

七、有序集合(Zsort)操作:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppblhZYW4_size_16_color_FFFFFF_t_70 6

八、排序操作:

20190322170521812.png

Java 连接 MySql 我们有 mysql-connector ,连接 Redis 我们有 jedis。

九、实例

引入依赖

  • redis.clients
  • jedis
  • 2.9.0

对应的是这两个 jar 包:

20190322165729693.png

使用 Jedis 提供的 API

  1. package com.qjl.pems.test;
  2. import java.util.Set;
  3. import org.junit.Test;
  4. import redis.clients.jedis.Jedis;
  5. import redis.clients.jedis.Transaction;
  6. /**
  7. * 类描述:测试Redis的客户端Jedis
  8. */
  9. public class JedisTest {
  10. /**
  11. * 测试与redis的连通性
  12. */
  13. @Test
  14. public void testPing() {
  15. Jedis jedis = new Jedis("192.168.198.130", 6379);
  16. System.out.println(jedis.ping());
  17. jedis.close();
  18. }
  19. /**
  20. * 测试redis常用api
  21. */
  22. @Test
  23. public void testRedisAPI() {
  24. Jedis jedis = new Jedis("192.168.198.130", 6379);
  25. // String info = jedis.info("replication");
  26. // System.out.println(info);
  27. jedis.set("k1", "v1");
  28. jedis.set("k2", "v2");
  29. jedis.set("k3", "v3");
  30. System.out.println(jedis.get("k2"));
  31. Set<String> sets = jedis.keys("*");
  32. System.out.println(sets.size());
  33. jedis.close();
  34. }
  35. /**
  36. * 演示主从复制
  37. */
  38. @Test
  39. public void testMasterSlave() {
  40. Jedis jedisM = new Jedis("192.168.198.130", 6379);
  41. Jedis jedisS = new Jedis("192.168.198.130", 6380);
  42. jedisS.slaveof("192.168.198.130", 6379);
  43. jedisM.set("name", "qujianlei");
  44. String result = jedisS.get("name");
  45. System.out.println(result);
  46. jedisM.close();
  47. jedisS.close();
  48. }
  49. /**
  50. * 演示事务
  51. */
  52. @Test
  53. public void testTransaction() {
  54. Jedis jedis = new Jedis("192.168.198.130", 6379);
  55. jedis.set("balanceA", "100"); // A账户可用余额
  56. jedis.set("balanceB", "220"); // B账户可用余额
  57. // 互斥锁(锁key)
  58. jedis.watch("balanceA");
  59. System.out.println("=====开始转账 A-->B 50 =====");
  60. Transaction tx = jedis.multi();
  61. tx.decrBy("balanceA", 50);
  62. tx.incrBy("balanceB", 50);
  63. tx.exec();
  64. System.out.println("=====转账结束=====");
  65. // 解锁全部被watch的key
  66. jedis.unwatch();
  67. System.out.println("======开始取款=====");
  68. System.out.println("A账户可用余额:" + jedis.get("balanceA"));
  69. System.out.println("B账户可用余额:" + jedis.get("balanceB"));
  70. jedis.close();
  71. }
  72. }

jedis 作为一个数据库同样也有数据库连接池 JedisPool,封装了一个简单的获取 Jedis 连接池的工具类(单例模式):

  1. package com.qjl.pems.test;
  2. import redis.clients.jedis.JedisPool;
  3. import redis.clients.jedis.JedisPoolConfig;
  4. public class JedisPoolUtil {
  5. private volatile static JedisPool JEDIS_POOL = null;
  6. private JedisPoolUtil() {}
  7. public static JedisPool getJedisPool() {
  8. if (JEDIS_POOL == null) {
  9. synchronized(JedisPoolUtil.class) {
  10. if (JEDIS_POOL == null) {
  11. JedisPoolConfig poolConfig = new JedisPoolConfig();
  12. poolConfig.setMaxTotal(500); // 500个连接
  13. poolConfig.setMaxIdle(32); // 最大的空闲连接
  14. poolConfig.setMaxWaitMillis(100 * 1000); // 最长的等待时间
  15. poolConfig.setTestOnBorrow(true); // 获得一个jedis连接时检测可用性
  16. JEDIS_POOL = new JedisPool(poolConfig, "192.168.198.130", 6379);
  17. }
  18. }
  19. }
  20. return JEDIS_POOL;
  21. }
  22. }

测试类如下:

  1. package com.qjl.pems.test;
  2. import java.util.Set;
  3. import org.junit.Test;
  4. import redis.clients.jedis.Jedis;
  5. import redis.clients.jedis.JedisPool;
  6. import redis.clients.jedis.Transaction;
  7. /**
  8. * 类描述:测试Redis的客户端Jedis
  9. */
  10. public class JedisTest {
  11. /**
  12. * 测试jedis连接池
  13. */
  14. @Test
  15. public void testJedisPool() {
  16. // 1.获取连接池
  17. JedisPool jedisPool = JedisPoolUtil.getJedisPool();
  18. // 2.获取某个连接
  19. Jedis jedis = jedisPool.getResource();
  20. // 3.设置键值
  21. jedis.slaveofNoOne(); // 成为 master
  22. jedis.set("a", "b");
  23. // 4.获取键对应的值
  24. System.out.println(jedis.get("a"));
  25. }
  26. }

转载:https://blog.csdn.net/zhangguanghui002/article/details/78770071

发表评论

表情:
评论列表 (有 0 条评论,337人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Jedis

    redis 应用场景 缓存(数据查询、短连接、新闻内容、商品内容等等) 聊天室的在线好友列表 任务队列。(秒杀、抢购、12306等等) 应用排行榜

    相关 jedis使用

    一、Redis Client介绍 1.1、简介 Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用。 Jedis源

    相关 Jedis 初探

    Jedis是java操作redis的jar包 先说一下如何连接redis 比如在linux操作系统上的话,进入目录,输入 "./redis cli"即可登录。 如果设置了

    相关 Jedis

    参考资料 Redis 单点模式和集群模式代码测试及问题记录:https://blog.csdn.net/boonya/article/details/49466003 Je

    相关 Jedis连接

    Jedis连接 到场api中的jedis。我们能够发现,jedis类提供了4个构造方法。都可用于连接: ![20141009172808406][] ![Cente