基本命令: redis不区分大小写
关键参数; 是否要获取符合规则的键名列表以支持glob样式的通配符? 一个字; * :匹配任何字符[B-D]B-D? “? ”
exists key 0/1; 判断一个键是否存在。
del key 0/1; 戴尔不支持通配符。 使用Linux管道和xargs命令进行自定义删除。
类型密钥; 获取密钥类型
字符串类型:存储任何形式的字符串,包括二进制数据。 一个密钥最多允许512MB的存储。 字符串是其他四种数据类型的基础,其他数据类型组织字符串的形式可以说不同。
设置密钥值;
获取密钥;
incrBy key [ increment ],decrBy key [ increment ],incrByFloat; incr是原子操作,仅当value为整数时才返回递增后的值。无key默认为0,返回1。 应用:文章访问量统计、自增加ID生成(使每日ID重新开始)、文章数据保存)脚本可以将序列化保存的数据带来使用) 另外:strlen key lengthb;
Mget key [key .]; msetkeyvalue [ key value . ] http://www.Sina.com /
转换getBit key offset (位置)、1字节8位、二进制位)、字节进行操作。
setBit key offset value,bit count key [开始] [结束],bitopoperationdestkey[key.] (运算多个字符,并将结果保存到destkey .)。 操作可以是AND OR XOR NOT )
可以通过位操作紧凑地保存布尔值。 例如,100万用户的性别只需要100KB左右的空间。 另外,getBit和setBit的时间复杂度都是o(1)
散列类型: (HASH ) ) ) ) ) ) )。
散列对象的关键帧值也是词典结构,用于存储“场”(field )到场值的映射。 字段值只能是字符串,不能嵌套其他数据类型。 一个散列行密钥最多可以包含2^32-1
结构优于关系数据库,可以减少冗馀字段。
hget key field; Hset key value字段; hMget key field [field.]; hmsetkeyfieldvalue [ field value . ]; Hgetall(HSET执行插入为1,更新操作为0 ) ) ) ) )。
h exists密钥场; HSE tnx密钥场值; hincrby密钥场增量; Helkeyfield[字段. ]
应用:保存各种属性
PS: hKeys key; hVels key; (仅获取字段名或字段值) hLen key
列表类型:通过在Redis类型内部使用的双向链表实现,因此在列表两端添加元素的时间复杂度为o(1)。 即使是数千万个要素的列表,获取头部或尾部的10个记录也是极其迅速的。
成本是通过索引访问元素的速度很慢。
应用:社交网站的新事物(查看最新内容)。 可用于记录日志。 新添加的日志不受日志数的影响。 也可以保存评论。 最新评论可以放在最前面。
命令:
lpush key value [value .],rpush key value [value .]
lpop key,rpop key
llen key获取列表中的元素数。
lRange key start stop还可以检索一些元素并使用负索引。 一旦超过,就会全部返回。
lrem key count value删除第一个count个值为value的元素。 计数从左开始,-从右开始,=0删除所有值为value的元素。
PS :
lIndex key index,lset key index value,linsertkeybefore/afterpivotvalue值为pivot的元素
剪切ltrim key start end,其中rpoplpush source destination将元素从一个表移动到另一个表
集合类型:最多可包含2^32-1个字符串的集合类型。 通常执行添加和删除操作。 类型内部使用值为空的哈希表( PS:位操作)实现。 因此,这些操作的时间复杂度是o(1)
冒着生命危险
令:sadd key member [member...],srem key member [member...]
smembers key ,获取集合所有的元素;sismember key member 判断元素是否在集合中
集合的运算:
sdiff ke[ key ...] 差集, sinter 交集 , sunion 并集
实践:存储文章的标签(一篇文章可以有多个标签,文章和标签之间没有固定的关系)
PS:
scard key 获取集合中的元素个数。 sdiffStore destination key [key ..] 进行集合运算并储存 和 sdiff 一样,但是会存储在destination中
sinterStore , sunionStore
sRandMember key [count] 随机获取多个元素。+ 做过去重的,-没做去重 有序集合类型:
和列表类型有相同也有很大的不同。
使用散列表和跳跃表(skip list)实现的。时间复杂度O(logN).
列表不能简单调整元素的位置,有序集合可以(通过更改这个元素的分数)
有序集合类比列表更耗内存。
命令: zadd key score member [ score member ...]
zscore key member 获得分数
zRange key start stop [withSores],zRevRange . 按照分数大小顺序排列出来,同时需要获取分数则加 withScores
zRangeByScore key min max [withScores] . 按照分数的范围给出排列
zIncre key increment member
实践:
文章实现按点击量排行。可以将分数设置为时间,就可以按时间排行。
PS:
zcard key , 获取元素的个数;zcount key min max 获取指定分数范围内的元素个数。
zrem key member [member...], 删除一个或者多个
zRemRangeByRank key start stop 按照排名范围删除元素。
zRemRangeByScore key min max 按照分数范围删除元素
zrank key member , zrevRank key member 获得元素的排名
zinterStore destination numkeys key [key ...] 计算有序集合的交集
转载于:https://www.cnblogs.com/RobertLionLin/p/11414522.html