spring boot整合redis
首先使用idea快速搭建spring boot环境
点击右上角File -> New -> Module
在弹出的页面上操作
注:在选择快速搭建网址的时候如果可以连接到默认网址,则使用默认网址,如果无法连接则选择下面的custom,并写入 http://start.aliyun.com 就可以了
创建后目录结构
SpringbootRedisApplication这个类是spring boot的启动类
application.properties是spring boot的配置文件
我们可以把properties类型改成yml或者yaml类型
在这里是将properties类型改成yml类型
在配置文件中写入redis配置,当然不写也没关系,spring boot自带默认配置和我们的在这里写入的配置是一样的,只是我们需要知道如果以后需要配置redis的其他属性也是在这里进行配置
spring:
redis:
host: 127.0.0.1
port: 6379
idea自动创建的spring boot环境自动导入了spring boot的junit测试环境。所以可以直接在test包下进行测试。
idea搭建spring boot环境的时候,自动在test包下创建了一个测试类,这个类和spring boot启动类同属一个包结构下
注:如果自己创建测试类,尽量保证和spring boot启动类在一个包结构。
如果不在一个包结构则需要手动指定启动类的字节码文件如下:
@RunWith(SpringRunner.class)
//如果不在一个包下则需要手动指定启动类字节码文件,否则不需指定括号中的内容
@SpringBootTest(classes = SpringbootRedisApplication.class)
public class SpringbootRedisApplicationTests {
@Test
public void contextLoads() {
}
}
为了省事我们直接在自动生成的test类中进行测试
spring boot下redis常用命令
spring boot对redis进行了封装变成了RedisTemplate,所以在使用的时候不像以前注入JedisPool了,而是变成了RedisTemplate。
redis常用的四大数据结构
数据类型 | 说明 |
---|---|
String | 字符串 |
List | 列表类型,可以从左或右往里设置值 |
Hash | 键值对类型 |
Set | 无序不可重集合类型,类似List,但是拥有交集、并集、差集运算 |
String类型
- 生成一个String类型的操作对象,这个对象拥有可以操作String类型的方法,操作时要指定被操作的key值
ValueOperations valueOperations = redisTemplate.opsForValue();
- 生成一个String类型的操作对象,同时绑定一个key值。这个对象是专门操作指定key值的对象。
BoundValueOperations boundValueOperations = redisTemplate.boundValueOps("key");
- 获取指定key的值
redisTemplate.opsForValue().get(key);
- 向指定key值中的value拼接字符串,如果key不存在则创建这个key,并将value设置进去
redisTemplate.opsForValue().append(key,value);
- 向指定key中设置value
redisTemplate.opsForValue().set(key,value);
- 向指定key中设置value,并设置过期时间
redisTemplate.opsForValue().size(key,value,TimeUnit);
- 返回指定key的字符串长度
redisTemplate.opsForValue().size(key);
List类型
- 生成一个List类型的操作对象,这个对象拥有可以操作String类型的方法,操作时要指定被操作的key值
ListOperations listOperations = redisTemplate.opsForList();
- 生成一个List类型的操作对象,同时绑定一个key值。这个对象是专门操作指定key值的对象。
BoundListOperations boundListOperations = redisTemplate.boundListOps(key);
- 从左往指定key集合中设置value
redisTemplate.opsForList().leftPush(key,value);
- 从右往指定key集合中设置value
redisTemplate.opsForList().rightPush(key,value);
- 弹出指定key值集合左侧的一个元素
redisTemplate.opsForList().leftPop(key);
- 弹出指定key值集合右侧的一个元素
redisTemplate.opsForList().rightPop(key);
- 从左往指定key集合中设置多个value
redisTemplate.opsForList().leftPushAll(keys,value1,value2···);
- 从右往指定key集合中设置多个value
redisTemplate.opsForList().rightPushAll(keys,value1,value2···);
- 更新指定key值集合中指定下标的value
redisTemplate.opsForList().set(key,index,value);
- 获取指定key值集合中指定下标的value
redisTemplate.opsForList().index(key,index);
- 获取指定key值集合中从指定下标开始到指定下标结束的所有元素的集合,
redisTemplate.opsForList().range(key,begin,end)
- 删除指定key集合中值等于value的元素(count=0, 删除所有值等于value的元素; count>0, 从头部开始删除第一个值等于value的元素; count<0, 从尾部开始删除第一个值等于value的元素)
redisTemplate.opsForList().remove(key,count,value);
- 将List列表进行剪裁
redisTemplate.opsForList().trim(key, start, end);
Hash类型
- 向指定key值Hash中设置一个键值对,键为hashKey,值为value
redisTemplate.opsForHash().put(key,hashKey,value);
- 获取指定key值Hash中指定hashKey对应的值
redisTemplate.opsForHash().get(key,hashKey);
- 获取指定key值hash所有键值对的hashKey集合
redisTemplate.opsForHash().keys(key);
- 删除指定key值Hash中指定HashKey的键值对
redisTemplate.opsForHash().delete(key,hashKey1,hashKey2···)
- 判断指定key值Hash中指定HashKey的键值对是否存在
redisTemplate.opsForHash().hasKey(key,hashKey);
- 获取指定key值Hash中所有的键值对
redisTemplate.opsForHash().entries(key);
- 获取指定key值Hash中所有的键值对中的所有值
redisTemplate.opsForHash().values(key);
- 将map中的键值对放入指定key值Hash中
redisTemplate.opsForHash().putAll(key,map);
Set类型
- 向指定key值的集合中放入value
redisTemplate.opsForSet().add(key,value);
- 删除指定key值集合中的value
redisTemplate.opsForSet().remove(key,value,value1···);
- 获取指定key值集合中的所有value
redisTemplate.opsForSet().members(key);
- 获取指定key值集合的元素个数
redisTemplate.opsForSet().size(key);
- 获取指定key值集合的一个随机元素
redisTemplate.opsForSet().randomMember(key);
- 获取指定key值集合的count个随机元素
redisTemplate.opsForSet().randomMembers(key,count);
- 判断指定key值集合中指定元素是否存在
redisTemplate.opsForSet().isMember(key,value);
- 弹出指定key集合中的栈顶元素
redisTemplate.opsForSet().pop(key);
- 计算指定两个key值集合的差值
redisTemplate.opsForSet().difference(key,otherKey);
- 计算指定key值与集合的插值
redisTemplate.opsForSet().difference(key,list);
- 计算指定key值集合和otherKey值集合的差集,并将求出的元素放入destKey键值集合中
redisTemplate.opsForSet().differenceAndStore(key,otherKey,destKey);
- 计算指定key值集合和指定集合的差集,并将求出的元素放入destKey键值集合中
redisTemplate.opsForSet().differenceAndStore(key,list,destKey);
- 计算指定key值集合和指定otherKey值集合的交集
redisTemplate.opsForSet().intersect(key,otherKey);
- 计算指定key值集合和指定集合的交集
redisTemplate.opsForSet().intersect(key,list);
- 计算指定key值集合和指定otherKey值集合的交集,并将结果存放在destKey值集合中
redisTemplate.opsForSet().intersectAndStore(key,otherKey,destKey);
- 计算指定key值集合和指定集合的交集,并将结果存放在destKey值集合中
redisTemplate.opsForSet().intersectAndStore(key,list,destKey);
- 计算指定key值集合和指定atherKey值集合的合集
redisTemplate.opsForSet().union(key,atherKey);
- 计算指定key值集合和指定list集合的合集
redisTemplate.opsForSet().union(key,list);
- 计算指定key值集合和指定otherKey值集合的合集,并将结果放入destKey值集合中
redisTemplate.opsForSet().unionAndStore(key,otherKey,destKey);
- 计算指定key值集合和指定list集合的合集,并将结果放入destKey值集合中
redisTemplate.opsForSet().unionAndStore(key,list,destKey);
- 计算指定key值集合和指定集合的差集,并将求出的元素放入destKey键值集合中
redisTemplate.opsForSet().differenceAndStore(key,list,destKey);
- 计算指定key值集合和指定集合的差集,并将求出的元素放入destKey键值集合中
redisTemplate.opsForSet().differenceAndStore(key,list,destKey);