使用 Java 操作 Redis

打印 上一主题 下一主题

主题 1001|帖子 1001|积分 3003

Jedis

1. 概述

Jedis 是一款使用 Java 操作 Redis 的工具,有点类似于 JDBC
2. 引入依赖
  1. <dependency>
  2.     <groupId>redis.clients</groupId>
  3.     <artifactId>jedis</artifactId>
  4.     <version>2.9.0</version>
  5. </dependency>
复制代码
3. 操作
  1. // 创建 jedis 客户端对象
  2. Jedis jedis = new Jedis("39.108.6.119", 6379);
  3. // 选择使用一个库,默认 0 号库
  4. jedis.select(0);
  5. // 清空当前库
  6. jedis.flushDB();
  7. //设置 redis 字符串数据
  8. jedis.set("key", "value");
  9. //存储数据到列表中
  10. jedis.lpush("list", "value1");
  11. jedis.lpush("list", "value2");
  12. jedis.lpush("list", "value3");
  13. // 更多操作
  14. ...
  15. // 释放资源
  16. jedis.close();
复制代码
具体 API 参考官网文档:https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html

SpringBoot 整合 Redis

1. 概述

SpringData 提供了 RedisTemplate 和 StringRedisTemplate,后者是前者的子集。两个模板基本一致,不同之处体现在操作的数据类型不同。RedisTemplate 中 key 和 value 泛型都是 Object,可以存储一个对象。而 StringRedisTemplate 的两个泛型都是 String,只能存储字符串
2. 引入依赖
  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>
复制代码
3. 操作
  1. @SpringBootTest(classes = RedisSpringbootApplication.class)
  2. @RunWith(SpringRunner.class)
  3. public class TestRedisTemplate {
  4.     @Autowired
  5.     private StringRedisTemplate stringRedisTemplate;
  6.     @Autowired
  7.     private RedisTemplate redisTemplate;
  8.     @Test
  9.     public void test() {
  10.         stringRedisTemplate.opsForValue().set("name", "jack");
  11.         String name = stringRedisTemplate.opsForValue().get("name");
  12.         // 更多操作...
  13.     }
  14. }
复制代码
具体 API 参考官网文档:https://docs.spring.io/spring-data/redis/docs/current/api/
4. 序列化

无论使用 StringRedisTemplate 还是 RedisTemplate,都会对 key 和 value 进行序列化
Spring-Data-Redis 的序列化方式是通过实现 RedisSerializer 接口,每一种实现都对应不同的序列化方式
4.1 JDK 序列化

org.springframework.data.redis.serializer.JdkSerializationRedisSerializer,RedisTemplate 的默认序列化方式,序列化对象需实现 Serializable 接口,绝大多数情况下,不推荐使用该方式,因为这种方式序列化之后保存的是字节序列,对阅读不友好
4.2 String 序列化

org.springframework.data.redis.serializer.StringRedisSerializer,StringRedisTemplate 的默认序列化方式,这种实现方式比较轻量与高效,但只能对字符串序列化,无法对普通对象序列化
4.3 Json 序列化

org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer 和 org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer,两者都是使用 Jackson 实现 JSON 的序列化方式,不同的是,前者必须在构造序列化对象时传入对象的类型,后者则不需要,并且序列化时将对象类型也保存了
4.4 修改序列化方案
  1. // 以修改序列化方案为 StringRedisSerializer 为例
  2. // 修改 key 序列化方案
  3. redisTemplate.setKeySerializer(RedisSerializer.string());
  4. // 修改 value 序列化方案
  5. redisTemplate.setValueSerializer(RedisSerializer.string());
  6. // 修改 hash key 序列化方案
  7. redisTemplate.setHashKeySerializer(RedisSerializer.string());
  8. // 修改 hash value 序列化方案
  9. redisTemplate.setHashValueSerializer(RedisSerializer.string());
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表