RedisTemplate依赖与配置
本文环境 Spring Boot 2.1.3 + Java JDK 1.8,pom.xml 文件中导入依赖,然后在需要地方直接注入 RedisTemplate 或者 StringRedisTemplate 使用即可:
maven依赖
<!--Spring Boot redis 启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--为 redis 导入 commons-pool2 连接池依赖 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.7.0</version>
</dependency>
配置文件
#Redis 配置,以下除了 timeout 外全部为默认配置.
spring:
redis:
host: localhost
port: 6379
database: 0
password:
timeout: 10000
lettuce:
pool:
max-active: 1000 #池中可以分配的最大连接数,使用负值表示无限制。
max-idle: 500 #池中'空闲'连接的最大数量,使用负值表示空闲连接的数量不限。
min-idle: 500 #池中要维护的最小空闲连接数的目标,此设置仅在为正时有效。
max-wait: -1ms #池中连接耗尽时引发异常之前,等待连接分配的最长时间。使用负值可以无限期等待。
redistemplate设置
设置过期时间为10分钟
redisTemplate.expire(redisKey, 10, TimeUnit.MINUTES);删除指定key
redisTemplate.delete(key);
redistemplate对字符串类型操作
set:新增一个字符串类型的值,key是键,value是值。
redisTemplate.opsForValue().set("string1","aaa");
设置变量值的过期时间(验证码)redisTemplate.opsForValue().set("string3","ccc",5, TimeUnit.MINUTES);
get:获取key键对应的值
redisTemplate.opsForValue().get("string1");截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串
redisTemplate.opsForValue().get("string1",0,2);
append:在原有的值基础上新增字符串到末尾redisTemplate.opsForValue().append("string1","bbb");
getAndSet: 获取原来key键对应的值并重新赋新值redisTemplate.opsForValue().getAndSet("string1","aa");
increment: 以增量的方式将double值/long值存储在变量中redisTemplate.opsForValue().increment("string2",5);
redistemplate对List类型操作
leftPush:从集合左边插入值
redisTemplate.opsForList().leftPush("list1","a");
从集合左边开始在v值后边插入新值v1redisTemplate.opsForList().leftPush("list1","a","b");
从左边批量插入新值
//方式一
redisTemplate.opsForList().leftPushAll("list2","a1","a2","a3");
//方式二
List<String> strings = Arrays.asList("j", "q", "k");
redisTemplate.opsForList().leftPushAll("list3", strings);leftPop:默认移除key中最左的一个值
redisTemplate.opsForList().leftPop("list1");
指定过期时间后删除key中最左的一个值redisTemplate.opsForList().leftPop("list2",5,TimeUnit.MINUTES);
range: 获取指定下标间的值
redisTemplate.opsForList().range("list2",0,2);
remove: 从存储在键中的列表中删除等于值的元素的第一个计数事件redisTemplate.opsForList().remove("list1",0,"a");
redistemplate对Set类型操作
add:向指定key中存放set集合
long add=redisTemplate.opsForSet().add("set1","1","2","3","4");
members:通过key获取set集合中的对象值Set<String> resultSet = redisTemplate.opsForSet().members("set1");
根据key查看集合中是否存在指定数据boolean is=redisTemplate.opsForSet().isMember("set1","1");
size:获取指定key的集合大小redisTemplate.opsForSet().size("set1");
randomMember:获取指定key的集合中一个随机数据redisTemplate.opsForSet().randomMember("set1");
randomMembers:获取指定key的集合中指定个数的随机数据 ,list集合中可能存在重复的数据redisTemplate.opsForSet().randomMembers("set1",2);
distinctRandomMembers:获取指定key的集合中指定个数的随机数据(去重)redisTemplate.opsForSet().distinctRandomMembers("set1",3);
move:将key1对应集合中的值v1,转移到key2集合中redisTemplate.opsForSet().move("set1","2","set2");
pop:随机弹出指定key对应集合中的一个元素redisTemplate.opsForSet().pop("set1");
随机弹出指定key对应集合中的指定个数个元素redisTemplate.opsForSet().pop("set1",2);
remove:批量移除key对应集合中指定的元素redisTemplate.opsForSet().remove("set1","1","4");
difference:获取key与另一个otherKey集合之间的差值redisTemplate.opsForSet().difference("set1","set2");
differenceAndStore:获取key与另一个otherKey所对应的集合之间的差值,并将结果存入指定的Key集合中redisTemplate.opsForSet().differenceAndStore("set1","set2","resultkey");
intersect:获取两个集合中的交集元素redisTemplate.opsForSet().intersect("set1","set2");
union:获取两个集合的合集,并且去重redisTemplate.opsForSet().union("set1","set2");
redistemplate对Hash类型操作
put:新增hashMap值
redisTemplate.opsForHash().put("hashValue","map1","value1");
get:获取key对应的map中,key为var2的map的对应的值redisTemplate.opsForHash().get("hashValue","map1");
entries:获取key对应的所有map键值对redisTemplate.opsForHash().entries("hashValue");
keys:获取key对应的map中所有的键redisTemplate.opsForHash().keys("hashValue");
values:获取key对应的map中所有的值redisTemplate.opsForHash().values("hashValue");
redistemplate对Hash类型操作
add:添加元素到变量中同时指定元素的分值
redisTemplate.opsForZSet().add("zset","a",0.1);
redisTemplate.opsForZSet().add("zset","b",0.2);
redisTemplate.opsForZSet().add("zset","c",0.3);
range:获取变量指定区间的元素redisTemplate.opsForZSet().range("zset",0,2);
reverseRange:获取变量指定区间的元素,按值从高到低排序redisTemplate.opsForZSet().reverseRange("zset",0,2);
zCard:获取有序集合中的成员数量redisTemplate.opsForZSet().zCard("zset");
remove:从有序集合中移除指定的元素redisTemplate.opsForZSet().remove("zset","b","c");
count:统计有序集合中指定值范围内的成员数量redisTemplate.opsForZSet().count("zset",0.0,0.2);
incrementScore:将指定成员的分数增加指定数值redisTemplate.opsForZSet().incrementScore("zset","a",0.2);
rank:获取指定成员在有序集合中的排名(按分数从低到高排序)(排行榜)redisTemplate.opsForZSet().rank("zset","a");
reverseRank:获取指定成员在有序集合中的排名(按分数从高到低排序)(排行榜)redisTemplate.opsForZSet().reverseRank("zset","a");