当前位置:   article > 正文

Java实现连接redis几种方式_java 连接redis

java 连接redis

第一种方法:使用RedisTemplate实现

1、导入jar包

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-web</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.projectlombok</groupId>
  11. <artifactId>lombok</artifactId>
  12. <optional>true</optional>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-test</artifactId>
  17. <scope>test</scope>
  18. </dependency>
  19. <dependency>
  20. <groupId>com.alibaba</groupId>
  21. <artifactId>fastjson</artifactId>
  22. <version>1.2.70</version>
  23. </dependency>

2、编写配置类

  1. spring:
  2. redis:
  3. password: 123456

3、创建实体类

  1. @Data
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. public class User {
  5. private Integer id;
  6. private String name;
  7. @JSONField(format = "yyyy-MM-dd HH:mm:ss")
  8. private LocalDateTime localDateTime;
  9. }

4、编写测试类

  1. private RedisTemplate redisTemplate;
  2. @Resource
  3. public void setRedisTemplate(RedisTemplate redisTemplate) {
  4. redisTemplate.setKeySerializer(RedisSerializer.string());
  5. redisTemplate.setValueSerializer(new GenericFastJsonRedisSerializer());
  6. this.redisTemplate = redisTemplate;
  7. }
  8. @Test
  9. void setredis() {
  10. User user = new User(1001,"张无忌", LocalDateTime.now());
  11. BoundValueOperations ops = redisTemplate.boundValueOps("stu:user:1001");
  12. ops.set(user);
  13. System.out.println("保存成功");
  14. }
  15. @Test
  16. void getredis(){
  17. BoundValueOperations ops = redisTemplate.boundValueOps("stu:user:1001");
  18. Object o = ops.get();
  19. System.out.println("ops = " + o);
  20. }

5、先运行setredis 再运行getredis

 第二种方法:使用Jedis实现

1、导入jar包

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>4.2.0</version>
  5. </dependency>
  6. <!--单元测试-->
  7. <dependency>
  8. <groupId>org.junit.jupiter</groupId>
  9. <artifactId>junit-jupiter</artifactId>
  10. <version>5.7.1</version>
  11. <scope>test</scope>
  12. </dependency>

2、在测试中    实现五种类型 添加到redis

  1. private Jedis jedis;
  2. @BeforeEach
  3. void setredis() {
  4. //1.建立连接
  5. jedis = new Jedis("127.0.0.1", 6379);
  6. //2.设置密码
  7. jedis.auth("123456");
  8. //3.选择数据库
  9. jedis.select(1);
  10. }
  11. //测试string
  12. @Test
  13. void teststring() {
  14. //存入数据
  15. jedis.set("name", "小花");
  16. String name = jedis.get("name");
  17. System.out.println("name = " + name);
  18. }
  19. //测试hash
  20. @Test
  21. void testhash() {
  22. //再user:1中插入name和age的数据
  23. jedis.hset("user:1", "name", "张三");
  24. jedis.hset("user:1", "age", "20");
  25. //获取hash中的值
  26. Map<String, String> stringStringMap = jedis.hgetAll("user:1");
  27. System.out.println("stringStringMap = " + stringStringMap);
  28. }
  29. //测试list
  30. @Test
  31. void testlist() {
  32. jedis.lpush("stu", "张二", "张三");
  33. jedis.rpush("stu", "张五", "张六");
  34. List<String> stu = jedis.lrange("stu", 0, 7);
  35. for (String s : stu) {
  36. System.out.println("s = " + s);
  37. }
  38. }
  39. //测试set
  40. @Test
  41. void testset() {
  42. jedis.sadd("demo", "a", "b", "c", "张三");
  43. long srem = jedis.srem("demo", "张三");
  44. System.out.println("srem = " + srem);
  45. long demo1 = jedis.scard("demo");
  46. System.out.println("demo1 = " + demo1);
  47. boolean sismember = jedis.sismember("demo", "张三");
  48. System.out.println("sismember = " + sismember);
  49. Set<String> demo = jedis.smembers("demo");
  50. System.out.println(demo);
  51. }
  52. //测试sortedset
  53. @Test
  54. void testsored() {
  55. jedis.zadd("student",98,"张一");
  56. long student = jedis.zcard("student");
  57. System.out.println("student = " + student);
  58. }
  59. @AfterEach
  60. public void tearDown() {
  61. if (jedis != null) {
  62. jedis.close();
  63. }
  64. }

 3、运行结果

第三种方式:JedisPool实现,Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能,在多线程下使⽤同⼀个Jedis对象会出现并发问题。也为了避免每次使⽤Jedis对象时都需要重新构建,Jedis提供了JedisPool。JedisPool是基于Commons Pool 2实现的⼀个线程安全的连接池

 1、引入依赖:

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>4.2.0</version>
  5. </dependency>
  6. <!--单元测试-->
  7. <dependency>
  8. <groupId>org.junit.jupiter</groupId>
  9. <artifactId>junit-jupiter</artifactId>
  10. <version>5.7.1</version>
  11. <scope>test</scope>
  12. </dependency>

2、创建config问价 ,创建一个JedisConnectionFactory 类。

  1. public class JedisConnectionFactory {
  2. private static final JedisPool jedisPool;
  3. static {
  4. JedisPoolConfig poolConfig = new JedisPoolConfig();//配置连接池
  5. poolConfig.setMaxTotal(8);// 最大连接•
  6. poolConfig.setMaxIdle(8);// 最大空闲连接
  7. poolConfig.setMinIdle(0);// 最小空闲连接
  8. poolConfig.setMaxWaitMillis(200); // 设置最长等待时间, ms
  9. jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379,1000,"123456"); //创建连接池对象
  10. }
  11. public static Jedis getJedis(){ //获取Jedis对象
  12. return jedisPool.getResource();
  13. }
  14. }

3、在测试中调用JedisConnectionFactory 来连接redis来实现五种连接方式

  1. private Jedis jedis;
  2. @BeforeEach
  3. void setredis() {
  4. //1.建立连接
  5. jedis= JedisConnectionFactory.getJedis();
  6. //2.设置密码
  7. jedis.auth("123456");
  8. //3.选择数据库
  9. jedis.select(1);
  10. }
  11. //测试string
  12. @Test
  13. void teststring() {
  14. //存入数据
  15. jedis.set("name", "小花");
  16. String name = jedis.get("name");
  17. System.out.println("name = " + name);
  18. }
  19. //测试hash
  20. @Test
  21. void testhash() {
  22. //再user:1中插入name和age的数据
  23. jedis.hset("user:1", "name", "张三");
  24. jedis.hset("user:1", "age", "20");
  25. //获取hash中的值
  26. Map<String, String> stringStringMap = jedis.hgetAll("user:1");
  27. System.out.println("stringStringMap = " + stringStringMap);
  28. }
  29. //测试list
  30. @Test
  31. void testlist() {
  32. jedis.lpush("stu", "张二", "张三");
  33. jedis.rpush("stu", "张五", "张六");
  34. List<String> stu = jedis.lrange("stu", 0, 7);
  35. for (String s : stu) {
  36. System.out.println("s = " + s);
  37. }
  38. }
  39. //测试set
  40. @Test
  41. void testset() {
  42. jedis.sadd("demo", "a", "b", "c", "张三");
  43. long srem = jedis.srem("demo", "张三");
  44. System.out.println("srem = " + srem);
  45. long demo1 = jedis.scard("demo");
  46. System.out.println("demo1 = " + demo1);
  47. boolean sismember = jedis.sismember("demo", "张三");
  48. System.out.println("sismember = " + sismember);
  49. Set<String> demo = jedis.smembers("demo");
  50. System.out.println(demo);
  51. }
  52. //测试sortedset
  53. @Test
  54. void testsored() {
  55. jedis.zadd("student",98,"张一");
  56. long student = jedis.zcard("student");
  57. System.out.println("student = " + student);
  58. }
  59. @AfterEach
  60. public void tearDown() {
  61. if (jedis != null) {
  62. jedis.close();
  63. }
  64. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/948863
推荐阅读
相关标签
  

闽ICP备14008679号