Redis数据类型:数据类型不支持类型嵌套
字符串类型
散列类型
列表类型
集合类型
有序集合类型
Redis命令:key命名可以采用:对象类型:对象ID:对象属性 如:user :1:friends 表示用户为1的好友列表
全局相关
- KEYS pattern:获得符合规则的键名列表,pattern支持通配符格式,该操作会遍历Redis中所有的键,数量较多会影响性能,不建议在生产环境使用
- EXISTS key:判断一个键是否存在,存在返回1,不存在返回0
- DEL key [key …]:删除键,可以删除一个和多个,返回被删除键的个数,可以使用 redis-cli DEL ‘redis-cli KEYS “user:*”’ 来删除user开头的所有键
- TYPE key:获取键的类型
字符串类型
- SET key value:将key的值赋值为value:SET name 张三
- GET key:得到key的值:GET name
- INCR key:将key的值加1,并返回加成功后的值
- INCRBY key increment:可以通过increment参数来指定step。如:INCRBY num 3 将num 加3
- DECRBY key decriment:根据decriment参数来减少指定的step
- INCRBYFLOAT key increment:增加指定浮点数 INCRBYFLOAT num 2.7 增加2.7
- APPEND key value:向尾部追加值,返回追加成功后的字符串长度
- STRLEN key:获取字符串长度
- MGET key [key …]:同时获得多个key的值
- MSET key1 value1 key2 value2:同时设置多个key的值
- 位操作
散列类型
- HSET key field value:给字段赋值(HSET car name BMW)
- HGET key field:获取字段值
- HMSET key field1 value1 field2 value2:批量设值
- HMGET key filed1 field2:获取多个字段的值
- HGETALL key:获取key下所有的字段和字段值
- HEXISTS key field:判断字段是否存在
- HSETNX key field value:如果字段不存在时赋值,如果存在,不执行操作
- HINCRBY key field increment:增加数字
- HDEL key field [field…]:删除字段(可以删除多个)
- HKEYS key, HVALS key:只获取key或者只获取value
- HLEN key:获取key键中字段的数量
列表类型:可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段
- LPUSH key value[value …] 向列表的左端添加元素,返回值为列表长度
- RPUSH key value[value …] 向列表的右端添加元素,返回值为列表长度
- LPOP key, RPOP key 从列表的左右两边弹出元素,被弹出的元素被删除
- LLEN key:获取key的长度
- LRANGE key start end:获取列表片段,包含两端元素,起始索引为 0,支持负索引,如:-1表示最右边第一个元素,-2表示最右边第二个元素,以此类推, LRANGE key 0 -1 可以获取列表中的所有元素,如果start>end 返回空列表,如果end大于length,返回最右边的元素
- LREM key count value:删除列表中前 count个值为 value的值。针对列表中数据重复的情况
- 当count>0时,会删除从最左边起的前count个值为value的元素
- 当count<0时,会删除从最右边起的前 |count|个值为value的元素
- 当count=0时,会删除所有值为value的元素
- LINDEX key index:获取索引为 index的value,如果index为负数,那么是从最右边的第 |index|个元素
- LSET key index value:将索引为index的值设置为value,如果为负数,从最右边的第 |index|个元素
- LTRIM key start end: 将原key截取,只保留start ~ end (闭区间,下标从0开始计算)值的的集合
- LINSERT key BEFORE|AFTER pivot value:从左到右的查找值为 pivot的元素,将value插入到该值的前面或者后面,若pivot不存在,返回-1(失败)
- RPOPLPUSH source destination:将一个元素列表的值转入另一个列表
集合类型:集合中的每个元素都是不相同的,且没有顺序
- SADD key member [member …]:向集合中添加元素
- SREM key member [member …]:删除集合的中元素
- SMEMBERS key:获取key中所有的元素
- SISMEMBER key member:判断元素在不在集合中
- 集合运算:
- SDIFF key [key …]: 对集合进行差集运算,A与B的差集代表 A-B,{1,2,3} - {2,3,4} = {1},多个集合计算按照顺序计算
- SINTER key [key …]:对集合进行交集运算,A与B的交集代表 AΩB {1,2,3} Ω {2,3,4} = {2,3}
- SUNION key [key …]:对集合进行并集运算,A与B的并集代表 AUB {1,2,3} U {2,3,4} = {1,2,3,4}
- SDIFFSTORE destination key [key …]: 对集合进行差集运算并将结果存储在destination中
- SINTERSTORE destination key [key …]: 对集合进行交集运算并将结果存储在destination中
- SUNIONSTORE destination key [key …]: 对集合进行并集运算并将结果存储在destination中
- SCARD key:获取集合中元素个数
- SRANDMEMBER key [count]: 随机获取集合中的 count 个元素, 如果count大于集合元素,返回所有,不会存在重复的数据。如果count为负数,返回|count|个元素,可能返回相同的元素,如果大于集合的个数,也会返回重复的数据,个数不会少,这是由于集合的存储类型采用 散列表 造成的。
- SPOP key : 随机弹出一个元素,无序的
有序集合类型:在集合的基础上,对集合中的每个元素关联了一个分数(分数允许负数)
- ZADD key score member [score member …]:向有序集合中插入该元素以及该元素的分数
- ZSCORE key member: 获取元素的分数
- ZRANGE key start end [WITHSOCORES]:和LRANGE一样,返回有序集合中的元素,按照分数由低到高的顺序,中文按照UNICODE编码
ZREVRANGE key start end [WITHSOCORES]:和ZRANGE一样,返回集合中的元素,按照分数的由高到低的顺序 - ZRANGEBYSCORE key min max [WITHSOCORES] : 返回指定分数区间(包含min和包含max)的元素,如果希望不包含,可在分数前加( 如:ZRANGEBYSCORE myzset2 (3 10 :返回myzset2中分数大于3且小于10的元素, ZRANGEBYSCORE myzset2 0 +inf 返回大于0的所有元素, -inf代表负无穷,+inf代表正无穷,
- ZINCRBY key increment member:增加member的分数,increment代表增加多少分,负数代表减分
- ZCARD key : 获取集合中元素的个数
- ZCOUNT key min max:获得指定分数范围的元素个数
- ZREM key member [member …]: 删除一个或多个元素
- ZREMRANGEBYRANK key start end : 按照分数从小到大的顺序删除元素
- ZREMRANGEBYSCORE key min max:删除元素的分数在min和max之间的元素
- ZRANK key member:获取元素的排名,从小到大
- ZREVRANK key member:获取元素的排名,从大到小
- 计算有序集合的交集:ZINTERSTORE, 计算并集:ZUNIONSTORE