在Java中操作Redis
Redis的 java客户端有很多.官方推荐的有三种:
Jedis
Lettuce
Redisson
Spring对Redis客户端进行了整合,提供了 Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis
使用Jedis去操作redis
使用Jedis操作Redis的步骤:
1. 获取连接
2. 执行操作
3. 关闭连接
说明:导入jedis的maven坐标后
1.1.获取连接
Jedis redis = new Jedis(“ip”,6379)
1.2 执行具体的操作
同Redis的常用命令一致,jedis.命令即可。
1.3关闭连接
jedis.close();
2.Spring Data Redis
在Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作
2.1 导入maven坐标
2.2 配置文件
在准备单元测试时,我们没有去创建RedisTemplate这个类,这里为什么还能去自动装配呢?
在我们Springboot这个项目中的一个依赖中:
有这么一段代码:
@Bean说明这RedisTemplate对象这个是由Spring来管理维护的.
@ConditionalOnMissingBean(name = “redisTemplate”)说明他是有条件的,即如果我们没有redisTemplate这个对象的时候,才会调用这个方法,把RedisTemplate这个对象创建出来。如果我们手动创建了这个Bean,并且自己把他放到Spring容器中,则不回去调用这个方法.
这时候我们去测试一下
发现问题:如果直接get city 是得不到的,这时因为RedisTemplate是由框架来提供的,我们需要将它的序列化方式改变一下
我们需要去创建一个配置类来改变一下key的序列化方式,这时在单元测试类注入的就是我们自己的RedisTemplate类了
这里设置了一下Hash结构里面的field,同样把他的序列化器给修改一下。
使用SpringDataRedis操作Redis_操作String类型数据
通过模板类
操作String类型的对象,这里redisTemplate.opsForValue()返回的实际上就是ValueOperations这个对象。**
使用SpringDataRedis操作Redis_操作哈希类型数据**
获取hash接口中的所有值
hashOperations.values(“002”)–>封装成list集合
使用SpringDataRedis操作Redis_操作列表类型数据
listOperations.rightPop是出队尾,出一个显示,然后删一个
使用SpringDataRedis操作Redis_操作集合类型数据
使用SpringDataRedis操作Redis _操作有序集合类型数据
操作ZSet类型的数据,其实就是sorted set这种数据
说明:执行.add时,最后的a会将第一个a给覆盖掉,所以取值时:
“bca”
在给b修改了分数后,再次输出:c a b
使用SpringDataRedis操作Redis _通用操作
补充知识:1.在我们进入redis客户端后,默认连接的是本地的redis服务,且默认连接的是0号数据库。
且redis默认给我们提供了16个数据库
使用select [0-15] 来切换数据库。
同样的,我们可以在配置文件中去修改数据库的数量