字符串string
set 键 值
get 键
取得键的值
incr 键
如果是值是整形的话值就会自增1
ttle
获取键到期的剩余时间
type 键
可以得到键的类型
rename 旧键 新键
把旧键的名字改成新的键
列表list
lpush list名 元素
list左边加入一个元素
rpush lpop ropo 同理
llen list名
获得表中元素的个数
lrange list名 m n
列出m-n的元素
0是第一个元素
m-n不包括n
是一个字符串的链表
字典hahset
hset 字典名 字典键 字典值
给字典加入键和值
如果字典不存在就直接新建
hgetall 字典名
得到字典的键和值
顺序是第一个键、第一个值、第二个键、第二个值…
hkey 字典名
得到所有字典的键
hvals 字典名
得到所有字典的值
给同一个键添加值会把原来的键进行一个覆盖
集合set
SAAD 集合名 元素
添加元素
SMEMBERS 集合名
输出集合所有元素
SISMEMBER 集合名 元素名
看元素是否属于集合
如果属于就返回1,否则返回0
无语,其实也都可以用小写……
set 的元素是不可重复的,也就是每个元素都是唯一的
有序集合 sorted set
zadd 集合名 分数 元素名
给集合添加一个元素(携带分数)
zcard 集合名
得到集合的元素的个数
zcount 集合名 m n
得到分数m-n之间的元素个数
包含m n
zrank 集合名 元素名
得到元素名的排名
最小值排在第一位 输出0
zrangebyscore 集合名 m m
从m-n按分数升序给出集合的元素
spring boot中使用
使用步骤
- 在启动类打上@EnableCaching表示启动缓存
- 对用在service层需要缓存的类打上@Cacheconfig(cacheName="redis中管理这个类所有keys的名称"),用于查询
对立面的方法打上@Cacheable(key='前缀名'+'#p0'),#p0表示第一个参数
方法返回值作为key,返回一条记录的时候是一个key,返回多条记录的机会是一个key的集合
比如一条记录是单个查询,多条记录是分页查询
总之返回的值会放到redis中
- 对增删改用CacheEvict(allEntries=true)表示每次先删除redis中所有相关的数据
因为redis是nosql的,所有对数据库的改变,不会自动关联
比如增加一条数据,不会在这类数据集合中增加,比如不会分页中增加
在mysql中增加一条分页里面就会自动增加一条
因此对数据库的改动都需要把相关的缓存清空以保证一致性
注意
对于默写在方法内部调用的缓存管理的方法通过框架的bean拿到这个缓存管理的方法,而不能自己调用缓存管理的方法
这么做是为了激活spring的aop,因为缓存是通过aop来实现的,而aop需要通过spring的bean来调用才能实现
自己自己调用是不能激活aop机制,从而不能实现缓存
redis各个类型在springboot中的使用
我个人感觉@Cacheable注解的方法只能利用redis的string和sorted set类型
sorted set 用于存放 当前类持有的所有的 key
string 则用于存放所有key对于的value,这个好像是默认的,你返回任何东西都给转化成一条string
如果想指定使用hash 或list 可能就只能通过 配置redis template类的办法了
各个类型的使用场景
string
最多是做sql数据库的缓存
把一条记录缓存为string类型的value
比如就是字段名,字段值,字段名,字段值
然后通过框架转化为json传给客户端
hash
比较适合对象的存储
因为对象有两个重要的数据,也就是属性名和属性值
那么就可以把对象作为hash的键,对象的各个属性和属性值作为其中的一系列的元素
list
list两端的数据性能比较好,所以适合处理获取最新或者最早的元素的场景
比如最新的新闻
set
set的特点是元素都是唯一的无序的,set做一些聚合的操作效率非常高,比sql要快
比如求交集、并集
比如求两用户的共同好友就可以用set
类似的求两个用户共同喜欢的商品,共同阅读的文章之类的就比较快
sorted set
sorted set的特点就是提供一个分数作为排序的依据
那么就适合有排序需求的场景
比如可以给用户亲密度的好友进行打分并排序
又比如根据用户的点击率作为分数进行一个排序