• Java应用连接Redis


    目录

    一、Maven工程连接Redis

    1.1 修改redis.conf文件

    1.2 在maven工程中添加Jedis依赖

    1.3 使用案例

    二、SpringBoot工程中连接Redis

    2.1 创建springboot应用:

    2.2 application.yml配置文件中配置Redis:

    2.3 使用RedisTemplate工具类操作Redis:

    2.4 RedisTemplate示例代码:

    一、Maven工程连接Redis

    1.1 修改redis.conf文件:

    1.2 在maven工程中添加Jedis依赖:

    1.3 使用案例:

    二、SpringBoot工程中连接Redis

    2.1 创建springboot应用:

    2.2 application.yml配置文件中配置Redis:

    2.3 使用RedisTemplate工具类操作Redis:

    2.4 RedisTemplate示例代码

    一、Maven工程连接Redis

    1.1 修改redis.conf文件:

            java应用连接Redis,首先需要通过配置文件要将我们的Redis设置允许远程连接。需要注意的是:我们一般不会在原配置文件中进行更改,我们需要在原配置文件的基础上复制出一份conf文件,在此基础上进行更改,具体步骤如下:

     1、 关闭保护模式

    protected-mode no

    2、将bind 注释掉(如果不注释,默认为127.0.0.1 只能本机访问)

    bind 127.0.0.1

    3、设置密码(也可以不设置)

    requirepass 123456

    4、 通过配置好的配置文件,重启Redis

    redis-server redis-6379.conf

     5、如果使用的是阿里云服务器,则需要设置安全组放行对应的redis端口

    1.2 在maven工程中添加Jedis依赖:

            在maven工程中使用redis之前,我们需要添加Jedis依赖,另外redis中不能存储对象类型,所以我们需要gson将对象转化成gson格式的字符进行存储,所以我们还需要导入‘gson’的依赖

    1. redis.clients
    2. jedis
    3. 3.3.0
    4. com.google.code.gson
    5. gson
    6. 2.8.6

    1.3 使用案例:

            创建maven工程,并在redis中存储product对象,存储数据的key为product的id。

    实体类:

    1. package com.xgsm.pojo;
    2. public class Product {
    3. private String productId;
    4. private String getProductName;
    5. private Double productPrice;
    6. public Product(String productId, String getProductName, Double productPrice) {
    7. this.productId = productId;
    8. this.getProductName = getProductName;
    9. this.productPrice = productPrice;
    10. }
    11. public String getProductId() {
    12. return productId;
    13. }
    14. public void setProductId(String productId) {
    15. this.productId = productId;
    16. }
    17. public String getGetProductName() {
    18. return getProductName;
    19. }
    20. public void setGetProductName(String getProductName) {
    21. this.getProductName = getProductName;
    22. }
    23. public Double getProductPrice() {
    24. return productPrice;
    25. }
    26. public void setProductPrice(Double productPrice) {
    27. this.productPrice = productPrice;
    28. }
    29. }

     测试类:

    1. package com.xgsm.redis;
    2. import com.google.gson.Gson;
    3. import com.xgsm.pojo.Product;
    4. import redis.clients.jedis.Jedis;
    5. public class test {
    6. public static void main(String[] args) {
    7. Product product = new Product("101", "wahhah", 323.0);
    8. // 1、连接Redis(导入jar包)
    9. Jedis jedis = new Jedis("192.168.0.102", 6379);
    10. // 2、将对象存储在redis中
    11. String set = jedis.set(product.getProductId(), new Gson().toJson(product));
    12. System.out.println(set);
    13. // 关闭redis
    14. jedis.close();
    15. }
    16. }

    需要注意的是:在进行redis存储的前,除了要修改redis.conf中的配置文件信息外,我们还需要关闭服务器的‘防火墙’,要不然会出现‘time out’连接超时的情况。关闭防火墙,执行‘systemctl stop firewalld’指令即可。执行test文件,返回‘OK’则存储成功

     

    二、SpringBoot工程中连接Redis

    2.1 创建springboot应用:

         Spring Data Redis依赖中,提供了用于连接redis的客户端:

    1. RedisTemplate
    2. StringRedisTemplate

            创建SpringBoot应用时,添加‘Nosql’依赖中的Sspring Data Redis(Access+Driver)’。其余步骤就是正常创建springboot应用即可,具体略~

    2.2 application.yml配置文件中配置Redis:

    1. # redis 服务器 ip
    2. spring.redis.host=192.168.200.129
    3. # redis 服务器端口
    4. spring.redis.port=6379
    5. # redis 密码
    6. #spring.redis.password=root
    7. # 连接超时时间(毫秒)
    8. spring.redis.timeout=60000
    9. # Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
    10. spring.redis.database=0

    2.3 使用RedisTemplate工具类操作Redis:

    SpringBoot中使用RedisTemplate来操作redis,需要在我们bean中注入这个对象,代码如下:

    @Autowired
    private RedisTemplate redisTemplate;
    // 用下面5个对象来操作对应的类型
    this.redisTemplate.opsForValue(); //提供了操作string类型的所有方法
    this.redisTemplate.opsForList(); // 提供了操作list类型的所有方法
    this.redisTemplate.opsForSet(); //提供了操作set的所有方法
    this.redisTemplate.opsForHash(); //提供了操作hash表的所有方法
    this.redisTemplate.opsForZSet(); //提供了操作zset的所有方法

    2.4 RedisTemplate示例代码:

    1. Xgsm 18:44:18
    2. import org.springframework.beans.factory.annotation.Autowired;
    3. import org.springframework.data.redis.core.RedisTemplate;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RestController;
    6. import java.util.HashMap;
    7. import java.util.List;
    8. import java.util.Map;
    9. import java.util.Set;
    10. @RestController
    11. @RequestMapping("/redis")
    12. public class RedisController {
    13. @Autowired
    14. private RedisTemplate redisTemplate;
    15. @RequestMapping("/stringTest")
    16. public String stringTest() {
    17. this.redisTemplate.delete("name");
    18. this.redisTemplate.opsForValue().set("name", "路人");
    19. String name = this.redisTemplate.opsForValue().get("name");
    20. return name;
    21. }
    22. @RequestMapping("/listTest")
    23. public List listTest() {
    24. this.redisTemplate.delete("names");
    25. Xgsm 18:45:03
    26. this.redisTemplate.opsForList().rightPushAll("names", "刘德华", "张学友",
    27. "郭富城", "黎明");
    28. List courses = this.redisTemplate.opsForList().range("names", 0,
    29. -1);
    30. return courses;
    31. }
    32. @RequestMapping("setTest")
    33. public Set setTest() {
    34. this.redisTemplate.delete("courses");
    35. this.redisTemplate.opsForSet().add("courses", "java", "spring",
    36. "springboot");
    37. Set courses = this.redisTemplate.opsForSet().members("courses");
    38. return courses;
    39. }
    40. @RequestMapping("hashTest")
    41. public Map hashTest() {
    42. this.redisTemplate.delete("userMap");
    43. Map map = new HashMap<>();
    44. map.put("name", "路人");
    45. map.put("age", "30");
    46. this.redisTemplate.opsForHash().putAll("userMap", map);
    47. Map userMap =
    48. this.redisTemplate.opsForHash().entries("userMap");
    49. return userMap;
    50. }
    51. @RequestMapping("zsetTest")
    52. public Set zsetTest() {
    53. this.redisTemplate.delete("languages");
    54. }
    55. }
    56. 更多Java学习视频,请关注公众号:Java充电社
    57. Set languages =
    58. this.redisTemplate.opsForZSet().range("languages", 0, -1);
    59. return languages;
    60.        
    61. this.redisTemplate.opsForZSet().add("languages", "java", 100d);
    62.        
    63. this.redisTemplate.opsForZSet().add("languages", "c", 95d);
    64.        
    65. this.redisTemplate.opsForZSet().add("language","php",70);
    66. Set languages =
    67. this.redisTemplate.opsForZSet().range("languages", 0, -1);
    68. return languages;
    69. }
    70. }

  • 相关阅读:
    Ubuntu `apt` 报错 “Errors were encountered while processing: base-passwd“ 的解决方法
    力扣刷题学习SQL篇——1-7 查询(修复表中的名字——利用字符串函数)
    两数之和 三数之和【基础算法精讲 01】
    安卓手机误删文件恢复
    【Linux练习生】基础IO(详细)
    【vuex】unknown action type:home/categoryList报错
    js的各种循环遍历
    为什么配置了npm的全局安装路径 执行npm 命令 还是走到其他目录
    中间件环境搭建配置过程解读
    【dyn_threshold_划痕检测】
  • 原文地址:https://blog.csdn.net/weixin_45295447/article/details/126803620