springboot里面使用redis
开发工具与关键技术:Java springboot
作者:熊俊杰
撰写时间:2021.6.8
Redis的五种基本数据类型
Redis-key:
keys * 查看当前库所有的key
exists name 判断namekey 是否存在
move name 1 移除 name
expire name 10 设置name 10秒钟之后过期
ttl name 查看过期时间
type name 查看当前 key 的类型
1、String:
append 追加字符串
incr views 给 views 加1 内容必须是数据类型
decr views 给 views 减1
incrby views 给 views 加10
decrby views 给 views 减10
getrange 范围查询数据
setrange 范围修改
setnx name value ---- > 如果 name 不存在,创建 name 返回1,存在返回0
mset k1 v1 k2 v2 批量设置
mget k1 k2 同时获取多个值
msetnx 设置多个值 如果一个值设置失败,那么全部失败 (原子性)
getset 先获取在设置
2、List: 基本数据类型,列表
lpush 储存 《左存储》
rpush 储存 《右存储》
lrange 读取
lpop : 左移除
rpop : 右移除
lindex 通过下标获取值
llen 获取list的长度
lrem 删除 ‘精确匹配’
ltrim 修剪
rpoplpush 移除列表的最后一个元素 并移动到新的列表中
lset 将列表中指定下标的值替换为另外一个
linsert 将某一个具体的值插入列表某个元素的前后
==参数==:`before 左、前 after 右、后
3、Set: set中的值不能重复
Sadd ----> 给集合添加值
Smembers -----> 查看当前集合元素
Sismember -----> 查看集合是否有hello 有的话返回1 没有就是0
Scard ------> 获取当前集合的个数
srem myset hello -----> 删除集合指定的值
Srandmember随机从集合中筛选一个数据
spop 随机删除一个元素
smove将一个指定的值移动到另外一个set集合中
SDIFF 查看2个集合的差集
SINTER 查看2个集合的交集 共同好友就可以实现
SUNION 查看2个集合的并集
4、Hash:Map集合,Key—Value ,—hash可以用于存储对象
hset map k changan ----> 给map存一个k-v
hget map k ----> 通过k取值
hmset map y king u anuyn ----> 给map存多个值
hmget map y u ----> 获取map多个值
hgetall map ------> 查看map所有的kv
hdel map u -----> 删除指定的 k
hlen map ----->hlen 查询集合有几组kv
HEXISTS map k ---查看集合的k是否存在
hkeys map ----查看所有的key
hvals map ----查看所有的value
hset myhash field3 5 ----- >>> 指定增量
hsetnx myhash field4 hello ---->创建一个集合,如果这个集合没有数据就放入数据,返回1,如果有数据那么返回0
hash 用来处理变更的数据 user name age ,尤其是用户信息之类,经常变动的信息! hash 更适合与对象的存储,String 适合字符串的存储!
5、Zset(有序集合):在set的基础上加了一个值
zadd myset 1 one -----> 创建一个值
zadd myset 2 two 3 three -----> 创建2个值
zrange myset 0 -1 ------> 获取myset 里的数据
zrangebyscore salary -inf +inf ---- > 通过集合salary 的 钱数排序 -inf 负无穷 +inf 正无穷---从低到高 进行排序
zrevrange salary 0 -1 ---从高到低 进行排序
zrangebyscore salary -inf +inf withscores -->> 查询出来所有数据 WITHSCORES会返回元素和其分数
zrem salary xiaohong --- 移除
zcard salary ----获取集合中的个数
zcount myset 1 2 ----获取指定区间的成员数量
上面是redis 的五种基本数据类型的方法和使用!
现在需要如何在java里面使用,首先在pom.xml文件里添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在配置文件application.properties里面配置redis的访问ip和端口,有密码也需要配置密码
#配置redis
spring.redis.port=6379
pring.redis.host=127.0.0.1
spring.redis.password=123456
在这里我们的redis传值RedisTemplate默认是<Object,Object>类型的,我们需要把RedisTemplate改为<String,Object>这样我们存储内容的时候可以不用转换,当我们调用的时候,直接使用我们自己封装好的模板。
//配置自己的 redis模板,
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
//为了我们的开发方便,一般直接使用 <String,Object> ,默认是<Object,Object>
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);//设置连接池,连接redis
//json序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);//方法已经弃用
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(om);
// String 的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key 采用String 方式序列化
template.setKeySerializer(stringRedisSerializer);
// hash 的key 采用String 方式序列化
template.setHashKeySerializer(stringRedisSerializer);
// Value 采用Json 序列化
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash 的 Value 采用Json 序列化
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
在这里我们使用的redis框架里面的方法名称和redis的有些差距,所以我们需要创建一个工具类来封装redis的方法名,具体可以查看下面的,
https://www.cnblogs.com/zhzhlong/p/11434284.html
这个工具类里面的redisTemplate需要用我们刚刚封装好的那个。
自动装配redis工具类,调用具体的方法就可以了