• Java与Redis的集成


    目录

    Java连接Redis

    导入依赖

    Redis服务器准备

     建立连接

     Java操作Redis常用类型数据

    Redis字符串(String)

     Redis哈希(Hash)

      Redis列表(List)

     Redis集合(Set)

     Redis有序集合(Sorted Set)

    Redis在项目应用


    Java连接Redis

    Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。

    导入依赖

    打开IDEA,进入Java项目,导入pom依赖

    1. <dependency>
    2. <groupId>redis.clients</groupId>
    3. <artifactId>jedis</artifactId>
    4. <version>2.9.0</version>
    5. </dependency>

    Redis服务器准备

    导入依赖后,找到redis.bat双击启动redis

     建立连接

    创建一个类,里面写连接Redis的相关代码 

    1. public class Redis {
    2. public static void main(String[] args) {
    3. //建立与数据库连接
    4. Jedis jedis= new Jedis("localhost",6379);
    5. //设置密码
    6. jedis.auth("123456");
    7. //测试是否连接上
    8. System.out.println(jedis.ping());
    9. }
    10. }

    如果运行显示PONG即可表明连接成功  

     

     Java操作Redis常用类型数据

    Redis字符串(String)

    1. package com.zking.ssm.common;
    2. import redis.clients.jedis.Jedis;
    3. public class Redis_ml {
    4. public static void main(String[] args) {
    5. //建立与数据库连接
    6. Jedis jedis = new Jedis("localhost", 6379);
    7. //设置密码
    8. jedis.auth("123456");
    9. //测试是否连接上
    10. System.out.println(jedis.ping());
    11. //String的相关操作
    12. //连接第七个数据库
    13. jedis.select(3);
    14. // 存值
    15. jedis.set("uname","帅哥");
    16. // 取值
    17. System.out.println(jedis.get("uname"));
    18. // 设置该hobby多久后自动删除
    19. jedis.setex("hobby",25,"game");
    20. // 查看剩余时间
    21. System.out.println(jedis.ttl("hobby"));
    22. // 修改值
    23. jedis.set("uname","美男子");
    24. System.out.println(jedis.get("uname"));
    25. // 删除值
    26. // System.out.println(jedis.del("uname"));
    27. }
    28. }

     Redis哈希(Hash)

    1. package com.zking.ssm.common;
    2. import redis.clients.jedis.Jedis;
    3. public class Redis_ml {
    4. public static void main(String[] args) {
    5. //建立与数据库连接
    6. Jedis jedis = new Jedis("localhost", 6379);
    7. //设置密码
    8. jedis.auth("123456");
    9. //测试是否连接上
    10. System.out.println(jedis.ping());
    11. //String的相关操作
    12. //连接第七个数据库
    13. jedis.select(3);
    14. // 存值
    15. // jedis.hset("man","sname","帅哥");
    16. // jedis.hset("man","sage","18");
    17. // jedis.hset("man","sex","男");
    18. // 取指定的字段值
    19. // System.out.println(jedis.hget("man", "sname"));
    20. // 删除值
    21. // System.out.println(jedis.hdel("man","sage"));
    22. // 查询指定的key的所有字段
    23. // System.out.println(jedis.hgetAll("man"));
    24. // 查询指定的key是否存在
    25. // System.out.println(jedis.hexists("man", "sname"));
    26. // System.out.println(jedis.hexists("man", "sage"));
    27. // 获取指定key的长度
    28. // System.out.println(jedis.hlen("man"));
    29. }
    30. }

      Redis列表(List)

    1. package com.zking.ssm.common;
    2. import redis.clients.jedis.Jedis;
    3. public class Redis_ml {
    4. public static void main(String[] args) {
    5. //建立与数据库连接
    6. Jedis jedis = new Jedis("localhost", 6379);
    7. //设置密码
    8. jedis.auth("123456");
    9. //测试是否连接上
    10. System.out.println(jedis.ping());
    11. //String的相关操作
    12. //连接第七个数据库
    13. jedis.select(3);
    14. // lpush key value1 value2 value3 将一个或多个值插入到列表头部
    15. jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球");
    16. // llen key 获取列表的长度
    17. System.out.println(jedis.llen("List_hobby"));
    18. // lindex key index 根据索引获取列表中的元素
    19. System.out.println(jedis.lindex("List_hobby", 0));
    20. // lrange key start sop 查看指定范围内的元素
    21. System.out.println(jedis.lrange("List_hobby", 0, 2));
    22. }
    23. }

     Redis集合(Set)

    1. package com.zking.ssm.common;
    2. import redis.clients.jedis.Jedis;
    3. import java.util.Set;
    4. public class Redis_ml {
    5. public static void main(String[] args) {
    6. //建立与数据库连接
    7. Jedis jedis = new Jedis("localhost", 6379);
    8. //设置密码
    9. jedis.auth("123456");
    10. //测试是否连接上
    11. System.out.println(jedis.ping());
    12. //String的相关操作
    13. //连接第七个数据库
    14. jedis.select(3);
    15. // Redis集合(Set
    16. // sadd key value1 [value2] 向集合添加一个或多个元素
    17. jedis.sadd("set_user", "哈巴狗", "花猪", "牛马", "joker");
    18. // scard key 获取集合中的元素数量
    19. System.out.println(jedis.scard("set_user"));
    20. // exists key 是否存在
    21. System.out.println(jedis.exists("set_user"));
    22. }
    23. }

     Redis有序集合(Sorted Set)

    1. package com.zking.ssm.common;
    2. import redis.clients.jedis.Jedis;
    3. import java.util.HashMap;
    4. import java.util.Map;
    5. import java.util.Set;
    6. public class Redis_ml {
    7. public static void main(String[] args) {
    8. //建立与数据库连接
    9. Jedis jedis = new Jedis("localhost", 6379);
    10. //设置密码
    11. jedis.auth("123456");
    12. //测试是否连接上
    13. System.out.println(jedis.ping());
    14. //String的相关操作
    15. //连接第七个数据库
    16. jedis.select(3);
    17. // 5、Redis有序集合(Sorted Set
    18. // -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
    19. jedis.zadd("mysort", 1.0, "三国演义");
    20. jedis.zadd("mysort", 2.0, "西游记");
    21. jedis.zadd("mysort", 3.0, "水浒传");
    22. jedis.zadd("mysort", 4.0, "红楼梦");
    23. Map<String, Double> map = new HashMap<>();
    24. map.put("mutouliu", 5.0);
    25. jedis.zadd("mysort", map);
    26. //正序排列
    27. Set<String> mysort = jedis.zrange("mysort", 0, -1);
    28. System.out.println(mysort);
    29. //倒序排列
    30. Set<String> mysort1 = jedis.zrange("mysort", -1, 0);
    31. System.out.println(mysort1);
    32. // 命令用于计算集合中元素的数量
    33. System.out.println(jedis.zcard("mysort"));
    34. // 命令用于计算有序集合中指定分数区间的成员数量
    35. System.out.println(jedis.zcount("mysort", 0, 4));
    36. // 命令在计算有序集合中指定字典区间内成员数量。
    37. System.out.println(jedis.zlexcount("mysort", "-", "+"));
    38. }
    39. }

    Redis在项目应用

    Redis 是一个开源的内存数据库,它提供了键值对存储、发布/订阅、列表、集合、排序集等功能。在项目应用中,Redis 可以用于多个方面。

    1. 缓存:Redis 可以作为缓存层,将频繁读取的数据存储在内存中,从而加快数据访问的速度。通过将结果缓存在 Redis 中,可以减少对数据库或其他数据源的访问次数,提高系统的响应速度。

    2. 分布式锁:在分布式系统中,Redis 可以用于实现分布式锁,保证多个节点对共享资源的互斥访问。通过 Redis 的原子操作,可以实现安全的分布式锁机制,防止多个节点同时对同一个资源进行操作。

    3. 会话管理:在 Web 应用中,Redis 可以用于存储会话数据。通过将用户的登录状态和相关信息存储在 Redis 中,可以实现无状态的应用架构,提高系统的可伸缩性和性能。

    4. 计数器和排行榜:Redis 提供了计数器和排序集功能,可以方便地实现计数和排名功能。比如,可以使用 Redis 的计数器功能记录网站的访问量,使用排序集功能实现排行榜功能等。

    5. 消息队列:Redis 的发布/订阅功能可以用作简单的消息队列系统。通过将消息发布到特定的频道,其他订阅者可以接收并处理这些消息,实现解耦和异步处理。

    需要注意的是,Redis 是一个内存数据库,数据存储在内存中,因此它适合处理对读写速度要求较高,但数据量相对较小的场景。在使用 Redis 时需要注意数据持久化、容灾备份等方面的考虑,以确保数据的安全性和可靠性。 

  • 相关阅读:
    微信对账单功能开发(V2)
    C学生管理系统 据学号查找学生节点
    Java客户端Http请求工具Okhttp和RestTemplate的详细介绍
    系统架构30 - 质量属性
    mysql 查询性能分析
    【C++】unordered_set和unordered_map介绍及使用【附OJ题】
    【23真题】Easy!速成120两个月够了!
    如何用汇编实现开关控制流水灯
    Postgresql源码(72)ResourceOwner资源管理器
    C++ vector容器
  • 原文地址:https://blog.csdn.net/m0_74934282/article/details/134237673