redis 五种数据类型
前言
前面学会了单机, 学会了集群, 但是redis咋用啊? 或者说, redis支持哪些数据类型呢?
常用的有五种: String , Hash, List, Set, zset(SortedSet)
一、String
String 类型, 在前面也是使用过的. 直接来看一下
可以使用del name来删除缓存
二、List
push指令:
push分两个, 一个从左边push, 一个从右边push. 但是这个左右, 是对准备push的值而言的. 而不是针对将要push的数组来说的.
pop指令
pop同样的, 也有两个. 这次是针对list来说的了
三、Hash
hash与前面的都不同, 这里是 key - field - value
相当于是, key是一个大类, 对应了一个 map, field就相当于是map的key, value相当于是map的value
hset进行赋值, hget用来获取值.
hset name 1 elvin 这么看, 是不是有点像往表里面查数据的感觉, 只不过我的field用的是数值字符串
hash 有一个很好的用途:
比如, 我对一张表 t_usr 进行操作, 有一个新增方法, 可以返回一个id, 那么我是否可以将数据进行缓存起来, hset t_usr id 值
那, 查询的时候, 可以先进行缓存的查询, 如果查询不到, 或者查询出来是空, 再去数据库中查询一次, hget t_usr id.
用这样的方式, 是不是可以对那些访问量比较大的地方, 进行加速访问.
那既然使用到了缓存, 就牵涉到一个缓存同步的问题了. 怎么解决呢?
一个很简单的方式. 在调用删除方法的时候, 可以 hdel t_usr id, 这样, 在下一次查询的时候, 是不是就会去查数据库, 并将查询的结果进行缓存, 就在删除数据的时候, 实现了数据同步.
同样的, 在修改的时候, 也可以做到数据同步, 不过这次有的选了, 可以选择删除缓存数据, 也可以选择更新缓存数据.
四、Set
set集合中的元素, 是不能重复的, 而且是无顺序的.
这里我将5,1重复写入, 但是很明显, 只保留了一份, List 则不会出现这种情况.
五、zset(SortedSet)
zset 与 set 稍有不同, 不是说可以重复, 而是他是有顺序的. 而且这个顺序是我们自己来设定的.
zadd新增指令:
从上图看, 最后的顺序, 是根据我们指定的分值来排序的.
zrem 删除指令:
更详细的指令可见: