时不时的加吧
所有的redis命令都是原子操作(可以使用redis的事务达到多个命令成为一个原子性操作)
Keys
1.DEL key [key ...]
删除一个、多个键
3.EXISTS key [key ...]
返回key是否存在,1是存在,0是不存在
4.EXPIRE key seconds
设置key的过期时间秒,设置成功返回1,如果key不存在或者不能设置过期时间返回0,超过时间后,将会自动删除该key
5.PEXPIRE key milliseconds
它以毫秒为单位设置 key 的生存时间,作用等同EXPIRE
6.EXPIREAT key timestamp
接受的时间参数是 UNIX 时间戳 Unix timestamp , 作用等同EXPIRE
7.PEXPIREAT key milliseconds-timestamp
参数为毫秒时间戳 , 作用等同EXPIRE
8.PERSIST key
移除key的生存时间(移除后永不过期)
当生存时间移除成功时,返回 1 .
如果 key 不存在或 key 没有设置生存时间,返回 0 .
9.TTL key
返回key剩余的过期时间。
如果key不存在返回-2
如果key存在且无过期时间返回-1
10.PTTL key
返回剩余生存时间(毫秒) ,同TTL
11.KEYS pattern
查找所有符合pattern(正则)的key
12.RANDOMKEY
在数据库中随机返回一个key (返回但是不删除)
13.RENAME key newkey
修改key的名字 key不存在报错,存在修改
14.SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pat] [ASC|DESC] [ALPHA] destination
排序 sort key 默认升序,sort key desc 降序
15.TYPE key
返回存储值value的类型 type key,返回none,key不存在
Strings
一个字符串类型键允许存储的数据最大容量是512MB,底层数据结构是int,raw和embstr。sds 是简单动态字符串
set
1.Set key value [expiration EX seconds|PX milliseconds] [NX|XX]
设置字符串,如果key存在,就重写。
a) EX seconds – 设置键key的过期时间,单位时秒
b) PX milliseconds – 设置键key的过期时间,单位时毫秒
c) NX – 只有键key不存在的时候才会设置key的值
d) XX – 只有键key存在的时候才会设置key的值
2.MSET key value [key value ...]
设置多个key value
3.APPEND key value
如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾。 如果 key 不存在,那么它将首先创建一个空字符串的key,再执行追加操作,这种情况 APPEND将类似于 SET操作
4.SETRANGE key offset value
覆盖key对应的String的一部分,从offset处开始,覆盖value的长度,长度不够,补0以达到offset
get
5.GETSET key value
设置一个key的值,并返回设置之前的值
6. get key
返回key对应的值
6.MGET key [key ...]
获取所有指定key的值
8.STRLEN key
返回key对应值的长度
9.INCR key DECR key
让当前键值递增,递减,并返回递增,递减后的值
使用场景
1 . INCR原子操作可用作计数器(点赞数,点击量),在分布式中可用作全局唯一id的生成
2 .作为缓存使用
3 .解决分布式中session共享
4 .String过期时间可以作用时间内限制请求接口次数
List
基于quicklist实现,一个列表类型键最多能容纳2^32 - 1个元素
set
1.LPUSH key value [value ...] RPUSH key value [value ...]
从队列左边或右边入队一个元素,返回值表示增加元素后列表的长度
2.LSET key index value
设置队列里面一个元素的值
3.LINSERT key BEFORE AFTER pivot value
把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。
当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。
当 key 存在,但保存的不是一个list的时候,会返回error。
get
4.LINDEX key index
通过索引获取列表中的元素
5.LLEN key
获取队列长度
6.LRANGE key start stop
可用于取出List所有元素,LRANGE key 0 -1
7.LPOP key RPOP key
从队列左边右边出队一个元素并返回
del
8.LREM key count value
从存于 key 的列表里移除前 count 次出现的值为 value 的元素,
count 大于0从列表左边开始删除前count个值为 value 的元素;
count小于0 从列表右边开始删除前|count|个值为 value 的元素;
count等于0 移除所有值为 value 的元素。
9.LTRIM key start stop
修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。经常和LPUSH, RPUSH一起使用,保证列表永远不会超过指定元素数目
使用场景
1 . LPUSH和RPOP 可以实现对列
2 .评论列表
Set
Redis 中集合是通过intset(整数集合)或hashtable(Hash表)实现的,所以添加,删除,查找的复杂度都是 O(1)(无论集合中有多少元素时间复杂度都为常量),一个集合类型键可以存储至多2^32 - 1个字符串
set
1. SADD key member [member ...]
添加一个或多个元素到集合(set)里
del
2. SREM key member [member ...]
从集合中删除一个或多个元素
get
3. SCARD key
返回集合(set)中元素的个数
4. SDIFF key [key ...]
返回一个集合与给定集合的差集
5. SDIFFSTORE destination key [key ...]
返回一个集合与给定集合的差集到指定的结果集中
6. SINTER key [key ...]
返回所有指定集合的交集
7. SINTERSTORE destination key [key ...]
返回所有指定集合的交集到指定的结果集中
8. SUNION key [key ...]
返回指定集合的并集
9. SUNIONSTORE destination key [key ...]
返回指定集合的并集到指定的集合中
10. SMEMBERS key
返回集合的所有元素
exist
11. SISMEMBER key member
判断一个元素是集合的成员, 是返回1,否返回0
move
12. SMOVE source destination member
从源集合移动到目的集合一个元素,成功移除返回1,如果该元素不是源集合中的,无任何操作,返回0
Sorted Set
底层数据结构是ziplist(压缩列表)或skiplist(跳跃表)。添加,删除,查找的复杂度都是O(log(N))
set
1.ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
添加到有序set中一个或多个分数成员对,
* XX: 仅仅更新存在的成员,不添加新成员。
* NX: 不更新存在的成员。只添加新成员。
* CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。 所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,`ZADD`返回值只计算新添加成员的数量。
* INCR: 当`ZADD`指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作。
get
2.ZCARD key
返回有序集的元素个数
3.ZCOUNT key min max
返回指定分数范围内的元素个数
4.ZSCORE key member
返回有序集key中,成员member的score值。
5.ZRANGE key start stop [WITHSCORES]
返回存储在有序集合key中的指定范围的元素。 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序。正序
6.ZREVRANGE key start stop [WITHSCORES]
返回存储在有序集合key中的指定范围的元素。 返回的元素可以认为是按得分从最高到最低排列。 如果得分相同,将按字典排序。倒序
7.ZRANGEBYLEX key min max [LIMIT offset count]
(分数必须相同)返回指定成员区间内的成员,按成员字典正序排序
LIMIT 返回结果是否分页,指令中包含LIMIT后offset、count必须输入
offset 返回结果起始位置
count 返回结果数量
8.ZREVRANGEBYLEX key max min [LIMIT offset count]
(分数必须相同)返回指定成员区间内的成员,按成员字典倒序排序
9.ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
返回指定分数范围的元素列表(也可以返回他们的分数)。
10.ZRANK key member
返回有序集key中成员member的排名,正序
11.ZREVRANK key member
返回有序集key中成员member的排名,倒序
del
12.ZPOPMAX key [count]
删除并返回有序集合key中的最多count个具有最高得分的成员。
13.ZPOPMIN key [count]
删除并返回有序集合key中的最多count个具有最低得分的成员。
14.ZREM key member [member ...]
删除指定的成员
15.ZREMRANGEBYLEX key min max
删除名称按字典由低到高排序成员之间所有成员。不要在成员分数不同的有序集合中使用此命令, 因为它是基于分数一致的有序集合设计的,如果使用,会导致删除的结果不正确。
16.ZREMRANGEBYRANK key start stop
移除有序集key中,指定排名(rank)区间内的所有成员。
17.ZREMRANGEBYSCORE key min max
移除有序集key中,所有score值介于min和max之间(包括等于min或max)的成员
18.ZINCRBY key increment member
增量指定成员的score值,返回score+increment值
∩和∪
19.ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
* WEIGHTS 每个成员的score值乘以该因子
* AGGREGATE sum返回相同成员的score和,min返回相同成员最小的score值,max返回相同成员最大的score值,
返回交集
20.ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
返回并集
Hashes
底层数据结构是ziplist(压缩列表)或hashtable,散列的键值也是一种字典结构,其存储了字段和字段值,但字段值只能是字符串,不支持其它数据类型。一个散列类型键可以包含至多2^32 - 1个字段
set
1.HSET key field value
设置hash里面的一个字段的值,没有就创建 会返回1,存在重写value值 会返回0
2.HMSET key field value [field value ...]
设置hash里面多个字段的值,没有创建,存在重写value值
3.HSETNX key field value
设置hash里面的一个字段,只有当这个字段不存在时该操作有效,并且返回1,反之返回0
get
4.HGET key field
获取hash中指定字段关联的值
5.HMGET key field [field ...]
获取hash中多个指定字段关联的值
6.HGETALL key
获取hash中指定key的所有的字段和值
7.HKEYS key
获取hash中指定key的所有的字段列表
HVALS key
获取hash指定key的中所有的值列表
8.HLEN key
获取hash中所有字段的数量
9.HSTRLEN key field
获取hash中指定字段的的长度
del
10.HDEL key field [field ...]
删除一个或多个,返回从哈希集中成功移除的域的数量
exist
11.HEXISTS key field
返回hash里面field是否存在,返回1存在,0不存在
12.HINCRBY key field increment
增加数字,并返回增加后的值
使用场景
1 .购物车。 HMSET key field value [field value ...]命令中的key , field , value 三个字段可以分别作为购物车的用户id,商品id,商品数量。
2 .存储对象。但是不能嵌套对象。
网友评论