glob风格通配符函数
符号 | 含义 |
---|---|
? | 匹配任意一个字符 |
* | 匹配任意个(包括0个)字符 |
[] | 匹配括号间的任一字符,可以使用"-“符号表示一个范围,如a[b-d]可以匹配"ab”,“ac"和"ad” |
\x | 匹配字符x,用于转义符号.如要匹配"?"就需要使用? |
获得键值的数据类型
TYPE key
REDIS中的数据类型
1. 字符串类型(允许存储数据的最大容量为512M)
赋值
SET key value取值
GET key value递增数字(当存储的是整数类型的字符串时)
INCR key增加指定的整数(当存储的是整数类型的字符串时)
INCRBY key increment(要增加的数值)递减数字(当存储的是整数类型的字符串时)
DECR key减少指定的整数(当存储的是整数类型的字符串时)
DECRBY key decrement(要减少的数值)增加指定浮点数
INCRBYFLOAT key increment(要增加的浮点数)向尾部追加值
- 说明: APPEND作用是向键值的末尾追加value,如果键不存在则将该键的值设置为value,返回值为追加后字符串的长度
APPEND key value
- 说明: APPEND作用是向键值的末尾追加value,如果键不存在则将该键的值设置为value,返回值为追加后字符串的长度
SET name zhang # OK
APPEND name san # 8
获取字符串长度
(存在返回键值的长度,不存在返回0)
STRLEN key同时设置多个键值
MSET key value [key value …]同时获取多个键值
MGET key [key …]位操作
(一个字节由8个位组成,下面的命令操作的是二进制位)
GETBIT key offset # 获取key的offset位二进制位
SETBIT key offset value # 将key的offset二进制位设置为value
BITCOUNT key [start] [end] # 获得[start, end]二进制位中值是1的个数,无start和end表示全部
BITOP operation destkey key [key …] # operation为进行的运算,有AND,OR,XOR和NOT,destkey为运算完后保存的键,key为要进行运算的key
对 foot1 和 foot2 进行AND运算,并将结果保存到foot中
BITOP AND foot foot1 foot2
2. 散列类型(hash)
- 简介:类似于python中的字典的数据结构key = {key: value, key1: value1…},一个散列类型键至多可以包含2^32-1个字段
- 适用:适用于存储对象,使用对象类别和ID构成键名,使用字段表示对象的属性,则字段值存储属性值
- 命令说明
赋值
(当key中的field存在时,更新value,插入操作返回1,更新操作返回0)
HSET key field value取值
HGET key多个赋值
HMSET key field value [field value …]多个取值
HMGET key field [field …]同时获得所有字段的值
HGETALL key判断键中的字段是否存在
(存在返回1,不存在返回0)
HEXISTS key field当字段不存在时赋值,当字段存在时不执行任何操作
HSETNX key fiels value增加数字(散列类型没有HINCR命令)
HINCRBY key field increment删除字段(返回值是被删除的字段的个数)
HDEL key field [field …]只获取字段名
HKEYS key只获取字段值(用来获取键中所有的字段值)
HVALS key获取字段的数量
HLEN key
3. 列表类型
- 简介: 类似于python中的列表list key = [value, value …],列表类型内部是使用双向链表实现的,一个列表中最多容纳2^32-1个元素
- 适用: 1. 查取最左或最后的元素 2. 记录日志,保证加入新日志的速度不会受到已有日志数量的影响
- 命令
向列表两端增加元素(返回值为增加元素后列表的长度)
LPUSH key value [value …] # 向列表左侧添加元素
RPUSH key value [value …] # 向列表右侧添加元素从列表两端弹出元素(返回值为被弹出的元素值)
LPOP numbers
RPOP numbers获取列表中元素的个数(当键不存在时返回0)
LLEN key获得列表片段 类似于python中的切片,不过LRANGE取值是闭区间[start, end]
LRANGE key start stop- 如果start的索引比stop的索引位置靠后,则会返回空列表
- 如果stop大于实际的索引范围,则会返回列表最右边的元素
删除列表中指定的值
LREM key count value- 根据count值的不同,LREM命令的执行方思会有所差异
- 当count>0时,LREM命令会从列表左边开始删除前count个值为value的元素
- 当count<0时,LREM命令会从列表右边开始删除前count个值为value的元素
- 当count=0时,LREM命令会从列表中删除所有值为value的元素
- 根据count值的不同,LREM命令的执行方思会有所差异
获得指定索引的元素值
LINDEX key index # 返回key列表中索引为index的元素设置指定索引的值
LSET key index value # 设置key列表中索引为index的元素的值为value只保留列表指定片段
LTRIM key start end- LTRIM可以删除指定索引范围之外的所有元素,其指定列表范围的方法和LRANGE相同,[start, end]也是闭区间
- 应用:可以保留最新的100条日志 LTRIM logs 0 99
向列表中插入元素
LINSERT key BEFORE|AFTER pivot value- 说明: LINSERT命令首先会在key这个列表中从左到右找到值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面
- 返回值: 插入列表后列表的元素个数
将元素从一个列表转到另一个列表
RPOPLPUSH source destination- 说明:限制性RPOP命令从source列表的右边弹出一个元素,然后将其加入到destination列表的左边,并返回这个元素的值
4. 集合类型
- 特点: 1. 无序性 2. 唯一性 3. 至多2^32-1个字符串
增加元素(增加一个或多个,键不存在则会自动创建)
SADD key member [member …]删除元素(删除一个或多个元素,返回删除成功的个数)
SREM key member [member …]获得集合中的所有元素
SMEMBERS key判断元素是否在集合中(值存在返回1,不存在返回0)
SISMEMBER key member集合间运算
差集运算
SDIFF key [key …]
SDIFF a b (表示a-b,结果为属于a且不属于b的元素构成的集合)交集运算
SINTER key [key …]
SINTER a b (表示所有属于a且属于b的集合)并集运算
SUNION key [key …]
SUNION a b (表示所有属于a或者属于b的集合)
获取集合中元素的个数
SCARD key进行集合运算并将结果存储
SDIFFSTORE destination key [key …]
SINTERSTORE destination key [key …]
SUNIONSTORE destination key [key …]
SDIFFSTORE 和 SDIFF命令功能一样,唯一区别就是前者不会直接返回运算结果,而是将结果存储在destination键中
SDIFFSTORE命令常用于需要进行多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集随机获得集合中的元素
SRANDMEMBER key [count]- 当count为正数时,SRANDMEMBER会随机从集合里获得count个不重复的元素,如果count的值大于集合中的元素的个数,则SRANDMEMBER会返回集合中的全部元素
- 当count为负数时,SRANDMEMBER会随机从集合中获得count个元素,这些元素有可能相同
从集合中随机弹出一个元素
SPOP key
5.有序集合类型
- 有序集合和列表类型的相似之处
- 二者都是有序的
- 二者都可以获得某一个范围的元素
- 有序集合和列表的区别
- 列表类型是通过链表实现的,获取靠近两端的数据速度极快,当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如"新鲜事"或"日志"这样很少访问中间元素的应用
- 有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以及时读取位于中间部分的数据速度也很快(时间复杂度O(log(N)))
- 列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)
- 有序集合要比列表类型更耗费内存
增加元素
ZADD key score member [score member …]获得元素的分数
ZSCORE key member获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANGE 命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有的元素(包含两端的元素)
如果最后加上WITHSCORES就会在返回的结果上加上元素的分数
如果两个元素的分数相同,Redis会按照字典顺序(即"0"<“9”<A"<“Z”<“a”<“z”)
ZREVRANGE命令和ZRANGE唯一不同在于ZREVRANGE是按照元素分数从大到小的顺序给出的获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]- 按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素
- 如果希望分数不包含端点值,可以再分数前加上"("
- min和max还支持无穷大,-inf和+inf分别表示负无穷和正无穷
- LIMIT offset count 同sql语句的用法一样,offset表示偏移量,count表示显示从offset+1个数开始的count个元素
增加某个元素的分数
ZINCRBY key increment member- ZINCRBY可以增加一个元素的分数,返回值是更改后的分数,imcrement也可以是个负数,表示减分
- 如果指定的元素不存在,Redis在执行命令前会建立它并将它的分数赋为0再执行操作
获得集合中元素的数量
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 …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]- ZINTERSTORE命令用来计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),返回值为destination键中的元素个数
- 当AGGREAGATE是SUM时(默认值),destination键中的元素分数是每个参与计算的集合中该元素分数的和
- 当AGGREAGATE是MIN时(默认值),destination键中的元素分数是每个参与计算的集合中该元素分数的最小值
- 当AGGREAGATE是MAX时(默认值),destination键中的元素分数是每个参与计算的集合中该元素分数的最大值
- ZINTERSTORE命令还能通过WEIGHTS参数设置每个集合的权重,每隔几何在参与计算时元素的分数会被乘上该集合的权重例如:
ZINTERSTORE sorteSetsResult 2 sorteSets1 sortsSets2 WEIGHTS 1 0.1
计算集合间的并集,ZUNIONSTORE,用法同ZINTERSTORE用法相同