1.redis的五种数据类型
string、hash、list、set、sort set
2.string
(1)redis 的存储最大容量是512M
(2)string 的命令有 setget,incr,desc,incrby,descby,append,strlen,mget,mset,getbit,
setbit,bitcount,bittop
(3)应用
1、文章访问量统计,redis建最好的命令方式为 对象类型:对象id:对象属性
2、自增id 对象类型:count
redis 的的数据类型中值不能嵌套其他数据类型
3.hash
(1)字段值只能是字符串
(2)散列类型适合存储对象:使用对象类别和ID构成键名
(3)存储对象相对于关系型数据库来说更加容易进行字段的扩展。
(4)散列命令 hset,hget,hmget,hmset,hgetall,hexitst,hincrby,hdel,hkeys,hvals,hlen
4.list
(1)列表可以存储一个有序的字符串列表,常用的操作是向两端添加元素,内部基于双向链表实现,时间复杂度O(1)
(2)适合用来记录日志,获取最新记录
(3)命令lpush,rpush,lpop,rpop,llen,lrange,lrem,lindex,lset,ltrim,linsert
lrem key count value
count >0 从左侧开始删除前count个值为value的元素
count <0 从右侧开始删除前|count|个值为value的元素
count=0 删除所有值为value的值
(4)应用 存储文章ID列表 存储评论列表
(5) linsert key before|after pivot vlue
在列表中从左到右查找值为pivot的元素,根据before和after决定插入前面还是后面
(6)rpoplpush source destination 将元素从一个列表转到另一个列表(只有这个命令,没有其他命令)
5.set
(1)集合常用于向集合中加入或删除元素,判断某个元素是否存在,集合类型是根据散列值为空实现的,所以时间复杂度都为O(1),集合可以进行交,并,差集运算
(2)操作 sadd,srem,
smembers key 获取集合中所有的元素
sismemer key member 判断一个集合是否存在一个元素
sdiff 差集,sinter 交集,sunion 并集
sdiffstore dest key ,sinterstore,sunionstore 不直接返回结果,将结果存储正在dest 中
srandmemer key [count] 随机获取集合中元素,还可以有参数count,
count>0 获取count个大于0的元素,如果count 的值大于集合中的元素个数,则会返回集合中全部元素
count<0 从集合中获取 |count|个,有可能相同
spop 弹出并删除
(3)应用
存储文章标签、通过标签搜索文章
6.sorted set
有序集合,在集合的基础上,每个元素关联了一个分数,
<1>有序集合和列表区别
(1)两者都是有序的
(2)两者都可以获取某一范围的元素
(3)列表基于链表实现,数量增多两边比较快,中间比较慢,适合新鲜事物和日志
(4)有序集合使用散列表和跳跃表实现,时间复杂度O(logN)
(5)列表不能简单调整某个元素的位置,有序集合可以
(6)有序集合比较耗费内存
<2>命令 zadd key score member
zscore key mebmer 获取分数
zscore key start stop [withscores]
zrevrange key start stop [withscores]
按元素分数从小到大返回数据,如需要获取分数后面加上,withscores
zincrby key incr member
<3>应用
按点击量排序,改进时间进行排序
zcard 获取元素个数 zrem ,zrank