Spring Data Redis

文章目录

Redis各种Java客户端

Java中如何操作redis,这里主讲IDEA中的框架Spring Data Redis来操作redis

Jedis是官方推出的,对应指令和操作redis相同

Spring Data Redis其实就是对Jedis和Lettuce进行一个高度封装,使用简单

Spring Data Redis

使用方式


依赖我已经导入好了

设置一下配置文件

写一下配置类

java 复制代码
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        //redisConnectionFactory是redis-starter依赖帮我们创建放入IOC容器中,不用自己创建
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key 序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        return  redisTemplate;
    }
}

然后我们就创一个测试类,测试对应bean是否创建成功(自己测)

学习一下如果使用该框架操作redis

五种不同类型的对象,用来操作不同类型的key-value

java 复制代码
		ValueOperations valueOperations = redisTemplate.opsForValue();
        HashOperations hashOperations = redisTemplate.opsForHash();
        ListOperations listOperations = redisTemplate.opsForList();
        SetOperations setOperations = redisTemplate.opsForSet();
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

操作字符串类型的数据

注意:redis和java中的字符串是不一样的,其实我们传什么对象,都会被序列化器序列化字符串存储到redis中

redisTemplate增添序列化器是为了防止乱码,如果不添加会有默认的序列化器,那个就因为序列化器不同,它显出来也不同,也不是说是乱码,底层算法不一样而已

java 复制代码
    /**
     * 操作字符串类型的数据
     */
    @Test
    public void testString(){
        //set  get setex stenx
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //set(key,value) 正常设置
        valueOperations.set("111","000");
        //get 获得对应可以的value
        Object o = valueOperations.get("111");
        System.out.println(o);
        //setex seconds 限时键值对
        valueOperations.set("110","001",101, TimeUnit.SECONDS);
        //setnx 只有不存在才可以设置
        valueOperations.setIfAbsent("lock","1");
    }
}

setex对应的方法

timeout代表对应时间数值,unit代表时间单位,分/秒等等

测试一下

控制台是正常的

value不是我们的000
因为redis对java来源的数据进行序列化就变成对应的样子了
为什么key不是乱码?
因为我们之前设置了key的序列化器

别问为什么没有110的key,因为我只设置了10s没截到

java 复制代码
//设置redis key 序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());

setex显示

操作哈希类型数据

java 复制代码
hset 对应put
hget对应get
hdel对应delete
hkeys对应keys
hvals对应values

列表类型

java 复制代码
lpush多个插入对应leftPushAll,单个插入对应leftPush
lrange对应range(返回对应索引的值所形成的集合)
rpop对应rightPop 弹出最低的并返回
llen对应size 就长度

集合类型

java 复制代码
add对应sadd 添加值
smembers对应members 获取对应key下的集合value
size 获取长度
intersect 获取集合交集
union 获取集合并集
remove 删除集合中的元素

有序集合类型

java 复制代码
add对应zadd 指定分数和value
range对应zrange 查询对应索引0到-1代表所有元素
incrementScore 对应 zincrby 给对应key的value加指定点的分
remove对应 zrem 删除集合中的元素

通用类型

java 复制代码
通用命令就是直接操作redisTemplate
keys对应keys(pattern) *代表全部
exists对应hasKey(key)
type对应type(key)
del对应delete(key)
相关推荐
毕设源码-朱学姐2 分钟前
【开题答辩全过程】以 便利店库存管理系统为例,包含答辩的问题和答案
java·eclipse
Nero1815 分钟前
代码随想录二刷第九天 | 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
java
程序员小凯15 分钟前
Spring MVC 多租户架构与数据隔离教程
spring·架构·mvc
泉城老铁26 分钟前
tomcat 部署springboot,线程经常断开导致数据库连接池关闭,如何解决
java·spring boot·后端
Nero1828 分钟前
代码随想录二刷第八天 | 28. 实现 strStr()、459.重复的子字符串
java
Le1Yu34 分钟前
配置管理的配置与拉取、热更新的配置、动态路由
java
Seven9736 分钟前
剑指offer-34、第⼀次出现的字符
java
Knight_AL38 分钟前
代理模式 vs AOP:支付服务中的日志增强实践(含执行顺序详解)
spring·代理模式
摇滚侠44 分钟前
Spring Boot 3零基础教程,properties文件中配置和类的属性绑定,笔记14
java·spring boot·笔记
星光一影1 小时前
HIS系统天花板,十大核心模块,门诊/住院/医保全流程打通,医院数字化转型首选
java·spring boot·后端·sql·elementui·html·scss