redis 数据类型操作

目录

A. redis 帮助文档

redis-server -h 服务端的帮助

help set 表达的是 help 命令的帮助

help @set 表达的是 set 集合的帮助

nx 只有当 key 不存在的时候才进行操作,----新增

xx 只有当 key 存在的时候才进行操作,----修改

value 原始数据类型

B. Redis数据模型

C. String 字符串操作

c1. 设置字符串值  set  

c2. 设置 key 的过期时间(对所有的数据类型都起作用)

c3. 查找键 keys

c4. 通过key获取值

c5. 追加字符串

c6. 获得value部分数据 

c7. value增减

c8. 修改key(对所有类型的数据都起作用)

D. 字节数组(bitmap位图)

d1. bit 位赋值

d2. 位逻辑操作

d3. 统计bit位为1的个数

d4. 实例

1. 网站用户的上线次数统计(活跃用户)

2.按天统计网站活跃用户

E. List列表  数组

e1. 添加元素

e2. 插入元素

e3. 删除

1. 删除操作

2. 弹出元素(删除)

3. 弹出元素(删除,阻塞)

4. 去除指定范围 外 元素

e4. 查看元素

F. Hash散列

f1. 添加数据

f2. 查询数据

f3. 属性值操作

f4. 删除属性

f5. 用途

f6. 不适合hash的情况

G. Set集合

g1. 添加数据

g2. 删除数据

g3. 查询数据

g4. 随机获取数据

g5. 逻辑操作

差集

交集

并集

H. SortedSet有序集合

h1. 添加数据

h2. 删除数据

h3. 查询数据

h4. 数据操作

h5. 数据集逻辑操作

并集

交集

I. redis 缓存数据库(分库)

J. 清除缓存数据

FLUSHDB   

FLUSHALL 


A. redis 帮助文档

redis-server -h 服务端的帮助

help set 表达的是 help 命令的帮助

help @set 表达的是 set 集合的帮助

nx 只有当 key 不存在的时候才进行操作,----新增

xx 只有当 key 存在的时候才进行操作,----修改

value 原始数据类型

OBJECT encoding k1

 

B. Redis数据模型

 

C. String 字符串操作

c1. 设置字符串值  set  

SET key  value [EX seconds] [PX milliseconds] [NX|XX]

EX 设置过期时间,秒,等同于 SETEX k1 10 v1 == set k1 v1 ex 10

PX 设置过期时间,毫秒,等同于 PSETEX k1 10000 v1  

NX 键不存在,才能设置,等同于 SETNX k1 v1  

XX 键存在时,才能设置  ====》 set k1 v1 xx 

MSET key value [key value ...]   设置多个键的字符串值

MSETNX key value [key value ...]      键不存在时,才能设置,设置字符串值  注意:这是原子操作,对其中一个key没有操作成功,全部失败 , msetnx k1 v1 k2 v2 s6 6

 

c2. 设置 key 的过期时间(对所有的数据类型都起作用)

EXPIRE k1 10 === PEXPIRE k1 10000 设置过期时间 ,为 10 秒

EXPIREAT key timestamp    设置在指定Unix时间戳过期 , 秒时间戳   

PEXPIREAT key milliseconds-timestamp   设置在指定Unix时间戳过期 , 毫秒时间戳   

PERSIST key  删除过期时间  ===> persist  k1

TTL key    查看剩余生存时间 , 秒  ===》  TTL k1

PTTL key   查看剩余生存时间 , 毫秒  ===》  PTTL k1

查看 key 的剩余时间:

key存在但没有设置TTL,返回-1

key存在,但还在生存期内,返回剩余的秒或者毫秒

key曾经存在,但已经消亡,返回-2

 

c3. 查找键 keys

KEYS pattern

pattern取值

* 任意长度字符 =====》  keys s*   或者   keys *

? 任意一个字符 =====》  keys s?     或者    keys ??

[] 字符集合,表示可以是集合中的任意一个  =====》  keys s[1,2]   

 

c4. 通过key获取值

MGET key [key ...]  获取多个给定的键的值  ====》 mget k1  或者  mget [k1,k2,k3]

GETSET key value  返回旧值并设置新值, 如果键不存在,就创建并赋值 ====》 getset k1 v2

STRLEN key  字符串长度 ====》  strlen k1

object encoding key   底层存储的value值的数据结构类型  ====》 object encoding k1

 

c5. 追加字符串

APPEND key value 如果键存在就追加;如果不存在就等同于SET key value ====》 append k1 aaa

 

c6. 获得value部分数据 

GETRANGE key start end   ====》 getrange k1 2 4  获得的结果是 cde 

                                                          getrange k1 -3 -1 获得的结果是 cde 

索引值从0开始,负数表示从字符串右边向左数起,-1表示最后一个字符

01234
abcde
-5-4-3-2-1

SETRANGE key offset value  从 offset 的位置开始覆盖字符串 ====》 setrange k1 2 xyzqwer   执行完后的结果为: abxyzqwer

 

c7. value增减

步长操作 字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串  

INCR key   每次对 value 增加 1 ====》 incr k1

DECR key   每次对 value 减少 1 ====》 decr k1

INCRBY key decrement  指定对 value 的增加数值 ====》  incrby k1 5

DECRBY key decrement  指定对 value 的减少数值 ====》  decrby k1 5  

INCRBYFLOAT key decrement  对 value 的增加数值为浮点型 ====》  incrbyfloat k1 5.5

DECRBYFLOAT key decrement  对 value 的减少数值为浮点型 ====》  decrbyfloat k1 5.5 

 

c8. 修改key(对所有类型的数据都起作用)

EXISTS key   键是否存在  ====》 EXISTS k1   

RENAME key newkey   键重命名 ====》 rename k1 s1

RENAMENX key newkey  键重命名 ====》 renamenx k1 s1   帮助文档上面显示的  Rename a key, only if the new key does not exist(可能当初设计的时候出现了什么状况吧)(实际上 renamenx 是 key 存在的时候才能执行)

键删除 DEL key [key ...]  ====》 del k1   或者   del [k1,k2,k3]

 

D. 字节数组(bitmap位图)

位图不是真正的数据类型,它是定义在字符串类型中

一个字符串类型的值最多能存储512M字节的内容,  位图上限:2^(9+10+10+3)=2^32b

8*1024*1024*1024=2^13 

 

d1. bit 位赋值

设置某一位上的值 SETBIT key offset value   (0/1)   ====》 setbit k1 1 1

offset偏移量,从0开始 获取某一位上的值 GETBIT key offset 返回指定值0或者1  ====》  getbit k1 1

在指定区间上第一次出现的位置偏移量 BITPOS key bit [start] [end]  ====》 bitpos k1 0 1 2   返回的是 k1 中 从 1 到 2 的 byte 中,第一次出现 0 的 bit 位的索引

                                                                                                                         bitpos k1 1 1 2   返回的是 k1 中 从 1 到 2 的 byte 中,第一次出现 1 的 bit 位的索引

                                                                                                                         bitpos k1 1 2   返回的是 k1 中 从 1 到 2 的 byte 中,第一次出现 1 的 bit 位的索引(bit默认为1)

0123456789101112131415
0123456701234567
 1     1 1      
第一个byte的值为 65, 代表 A第二个byte的值为 64, 代表 @

 

d2. 位逻辑操作

operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种

BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑,并将结果保存到 destkey  ====》 BITOP AND destkey a b

BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑,并将结果保存到 destkey ====》 BITOP or destkey a b

BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey ====》 BITOP xor destkey a b

索引01234567  
 1     1A65
b 1      @64
AND  1      @64
OR  1     1A65
XOR        1笑脸x01

BITOP NOT destkey key ,对给定 key 求逻辑,并将结果保存到 destkey  ====》 bitop not destkey a

索引01234567  
 1     1A65
not1 11111 190xbe

d3. 统计bit位为1的个数

BITCOUNT key [start] [end]      ,byte 索引 从 start 到 end 上面 bit 位  为 1 的个数   ====》 bitcount k1 1 1  表示k1 中 第一个 byte 中 bit 位为 1 的个数 

从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后是字节(byte) 

BITCOUNT testkey 0 0    表示从索引为0个字节到索引为0个字节,就是第一个字节的统计 ====》 BITCOUNT testkey 0 2  ,第 0 到 第 2 个字节 bit 位为 1 的个数

BITCOUNT testkey 0  -1    等同于  BITCOUNT testkey

BITCOUNT testkey    查看该 key 对应的 value 的 bit 位为 1 的个数

 

d4. 实例

1. 网站用户的上线次数统计(活跃用户)

用户ID为key,天作为offset,上线置为1  

366 天  需要的存储空间 366/8  50Byte  

key:  xiaoming   value:  11 1 000000000000000001010000000000000000

BITCOUNT xiaoming   ,统计小明这一年内的上线次数

 

2.按天统计网站活跃用户

天作为key,用户ID为offset,上线置为1

假设: 小明的账号为:576732653   小红的账号:576732456

setbit 20201101 576732653  1  ,这天小明上线

setbit 20201101 576732456 1   ,这天小红上线

求出 20201101 到 20201105 这一段时间网站用户的活跃数

BITOP or countuser 20201101 20201102 20201103 20201104 20201105  ,计算

bitcount countuser  ,统计

 

E. List列表  数组

基于Linked List实现

元素是字符串类型

列表头尾增删快,中间增删慢,增删元素是常态

元素可以重复出现

最多包含2^32-1元素

队列:L/R  R/L

栈: L/L   R/R

数组:LINDEX LSET

阻塞:BL BR

 

e1. 添加元素

LPUSH key value [value ...]   ,左边压入元素  ====》 LPUSH k1 xiaoming

LPUSHX key value  ,当key存在的时候,从左边压入数据  ====》 LPUSHX k1 gougou

RPUSH key value [value ...]  ,右边压入数据  ====》 rpush k1 dabai

RPUSHX key value  ,当key存在的时候,从右边压入数据  ====》 rpushx k1 wugui

LSET key index value   设置指定位置元素的值 ====》 LSET k1 1 xiaohei

 

e2. 插入元素

LINSERT key BEFORE|AFTER pivot value  在列表中某个存在的值(pivot)前或后插入元素

before | after 这里指代的是, 该 pivot 元素所在的 索引 前后

key 和 pivot 不存在,不进行任何操作

举例 :

lpush k3 a b 1 2 c d a 1 2 3  ====》 存储的顺序为 "3""2""1""a""d""c""2""1""b""a"

LINSERT k3 after a java  ====》 执行结果为 "3""2""1""a""java""d""c""2""1""b""a"

LINSERT k3 before b is  ====》  执行结果为"3""2""1""a""java""d""c""2""1""is""b""a"

 

e3. 删除

1. 删除操作

从列表头部开始删除值等于value的元素count次

LREM key count value 

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值

count = 0 : 移除表中所有与 value 相等的值

举例 :

RPUSH k1 aa cc bb aaa ccc aa 123 321  cc aa bb

LREM k1 2 aa   表示,从左边开始查询,删除 2 个值为 aa 的索引

LREM k1 -2 bb   表示,从右边开始查询,删除 2 个值为 aa 的索引

LREM k1 0 cc   表示,删除 所有值为 cc 的索引

 

2. 弹出元素(删除)

LPOP key  表示从 左边 弹出元素 ====》 LPOP k1

RPOP  key  表示从 右边 弹出元素 ====》RPOP  k2

RPOPLPUSH source destination  从一个列表尾部弹出元素压入到另一个列表的头部  ====》RPOPLPUSH k1 k2

 

3. 弹出元素(删除,阻塞)

如果弹出的列表不存在或者为空,就会阻塞

超时时间设置为0,就是永久阻塞,直到有数据可以弹出(弹出后结束阻塞进程) 

如果多个客户端阻塞在同一个列表上,使用First In First Service原则,先到先服务

BLPOP key [key ...] timeout   从左侧开始弹出数据并且设置阻塞时间 ====》 BLPOP k1 k2 k3 0    弹出k1 ,k2 ,k3 上的数据,只要有一个key值有数据弹出(录入多条数据则会弹出索引值最小的一个),就结束阻塞

BRPOP key [key ...] timeout  从右侧开始弹出数据并且设置阻塞时间 ====》 BLPOP k1 60  阻塞时间为60秒,这个时间内只要 k1 有数据弹出(录入多条数据则会弹出索引值最大的一个),就会结束阻塞

BRPOPLPUSH source destination timeout  从一个列表尾部阻塞弹出元素压入到另一个列表的头部 ====》 BRPOPLPUSH k1 k2 10 阻塞时间为10秒,从k1 右侧弹出数据,将数据从左侧加入到 k2

 

4. 去除指定范围 外 元素

LTRIM key start stop   删除索引 start  到 stop 之外的其他所有元素

举例 :

RPUSH k2 c abc c ab 123 ab bj ab xx yy zz qq ww ee rr dd ff 

LTRIM k2 0 -1   表示,不删除元素

LTRIM k2 1 -1  表示,删除索引为 0 的元素

LTRIM k2 1 10000  表示,删除索引为 0 或者 索引大于 10000 的元素

 

e4. 查看元素

LRANGE key start stop  这里 start,stop 指代的是 value 的索引   ====》 LRANGE k1 2 3

LRANGE key 0 -1  表示返回所有元素  ====》 LRANGE k1 0 -1

LINDEX key index   获取指定位置的元素  ====》 LINDEX k1 1

LLEN key  列表长度,元素个数 ====》 LLEN  k1

 

F. Hash散列

由 field 和关联的value组成的map键值对 ( key 对应的 值相当于一个对象 )

field和value是字符串类型

一个hash中最多包含2^32-1键值对

f1. 添加数据

HSET key field value  新增元素 ====》 HSET h1 id 001  表示对 h1 的key 添加一个 id 属性 值为 001

HSETNX key field value  ,表示key的filed不存在的情况下执行,key不存在直接创建  ====》HSETNX h2 phone 13344445555   如果h2 存在则会报错

HMSET key field value [field value ...]  设置多个字段  ====》 hset h1 name yang_zzu age 18

HEXISTS key field   判断字段是否存在 , 表示key或者field不存在,返回0 ====》 HEXISTS h1 address  该属性不存在,返回值为 0 

 

f2. 查询数据

HLEN key  返回字段个数  ====》 HLEN h1   查询 h1 中的属性个数

HGET key field 返回字段值 ====》 HGET h1 name  查询 h1 的name 属性的值

HMGET key field [field ...]  返回多个字段值  ====》 HMGET h1 name age  查询 h1 的 name,age 属性的值

HGETALL key  返回所有的键值对 ====》 HGETALL h1   返回查询 h1 的所有属性及其对应的值

HKEYS key  返回所有字段名 ====》  HKEYS h1  返回 h1 所有的属性名称

HVALS key  返回所有属性的值 ====》   HVALS h1    返回的数据只有 属性值,没有属性名称

 

f3. 属性值操作

HINCRBY key field increment  在字段对应的值上进行整数的增量计算  ====》 HINCRBY h1 age 2  表示 age 的属性值增加 2

HINCRBYFLOAT key field increment  在字段对应的值上进行浮点数的增量计算 ====》 HINCRBYFLOAT h1 age 2.2  表示 age 的属性值增加 2.2

 

f4. 删除属性

HDEL key field [field ...]   删除指定的字段 ====》  HDEL h1 address  删除 h1 的 address 属性

 

f5. 用途

节约内存空间 每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等) 所以数据库里面的键越多,redis数据库服务器在储存附加管理信息方面耗费的内存就越多,花在管理数据库键上的CPU也会越多

 

f6. 不适合hash的情况

使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据

使用过期键功能:Redis的键过期功能目前只能对进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面

 

G. Set集合

无序的、去重的

元素是字符串类型

最多包含2^32-1元素

 

g1. 添加数据

SADD key member [member ...]  增加一个或多个元素,如果元素已经存在,则自动忽略 ====》 SADD s1 xiaoming   向s1 中添加 xiaoming 的元素,返回添加成功的元素的个数

 

g2. 删除数据

SREM key member [member ...]  移除一个或者多个元素 元素不存在,自动忽略 ====》 SREM s1 xiaoming  删除 s1 中 xiaoming 的元素,返回 删除 成功的元素的个数

SPOP key [count]   随机从集合中移除并返回这个被移除的元素 ====》 spop s1 2   从 s1 中弹出 2 个元素数据, 不指定 count 的值,默认弹出一条数据

SMOVE source destination member  把元素从源集合移动到目标集合 ====》  SMOVE s1 s2 hadoop    将 s1 中的 hadoop 元素 移动到 s2 集合中 (不能一次移动多个元素)

 

g3. 查询数据

SCARD key   不需要遍历, 返回集合中元素的个数 ,键的结果会保存信息,集合长度就记录在里面

SMEMBERS key   返回集合包含的所有元素 (数据不是有序,每次返回的结果顺序可能不一样),如果集合元素过多,例如百万个,需要遍历,可能会造成服务器阻塞,生产环境应避免使用

SISMEMBER key member   检查给定元素是否存在于集合中  ====》 SISMEMBER s1 xiaobai   如果存在则返回 1,不存在返回 0

 

g4. 随机获取数据

SRANDMEMBER key [count]   随机返回集合中指定个数的数据 ====》 SRANDMEMBER s1 3   返回 s1 中的 3 个元素,每次返回的数据都不一样

如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。

如果 count 大于等于集合基数,那么返回整个集合  最多返回整个集合

如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值,元素可能重复

如果 count 为 0,返回空

如果 count 不指定,随机返回一个元素
 

g5. 逻辑操作

SADD s1 a b c 1 2 3

SADD s2 a b c d e f g h 1 

差集

SDIFF key [key ...],从第一个key的集合中去除其他集合和自己的交集部分 ====》 SDIFF s1 s2   输出 s1 - s2 的数据

SDIFFSTORE destination key [key ...],将差集结果存储在目标key中 ====》 SDIFFSTORE cs3 s1 s2  将 s1 - s2 的数据,保存到 cs3 中

交集

SINTER key [key ...],取所有集合交集部分 ====》 SINTER s1 s2  输出 s1 s2 中相同的元素

SINTERSTORE destination key [key ...],将交集结果存储在目标key中  ====》  SINTERSTORE jc3 s1 s2  将 s1 s2 中相同的元素,保存到 jc3 中

并集

SUNION key [key ...],取所有集合并集 ====》  SUNION s1 s2   输出 s1 + s2 去重后的数据

SUNIONSTORE destination key [key ...],将并集结果存储在目标key中 ====》 SUNIONSTORE uc3 s1 s2 将 s1 + s2 去重后的数据,保存到 uc3 中

 

 

H. SortedSet有序集合

类似Set集合 元素是字符串类型 最多包含2^32-1元素

有序的、去重的

每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。分值可以相同

 

h1. 添加数据

ZADD key score member [score member ...]   增加一个或多个元素 ,如果元素已经存在,则使用新的score  ====》 zadd fruits 5 xiangjiao 

 

h2. 删除数据

移除一个或者多个元素 ZREM key member [member ...]   元素不存在,自动忽略  ====》 ZREM fruits mangguo   返回删除的元素的个数

ZREMRANGEBYRANK key start stop  移除指定排名范围的元素 ====》 ZREMRANGEBYRANK fruits 10 12 删除排序后索引下标(从 0 开始)为 9 10 11  的元素

ZREMRANGEBYSCORE key min max  移除指定分值范围的元素 ====》  ZREMRANGEBYSCORE fruits (20 (50    删除 20 < score < 50 的元素

 

h3. 查询数据

ZCARD key  返回集合中元素个数 ====》 ZCARD fruits

ZCOUNT key min max  返回指定范围中元素的个数  ====》  ZCOUNT fruits 4 7   返回 4<= score <=7 的元素的个数

                                                                                                 ZCOUNT fruits (4 7  返回 4< score <=7 的元素的个数

ZRANGE key index  index [withscores]  查询全部的数据 ====》 ZRANGE fruits 0 -1 withscores  查询全部的数据,输出 score 和 元素数据

ZSCORE key member   显示分值 ====》 ZSCORE fruits putao    显示fruits 中, putao元素的分值

ZRANK key member  返回元素的排名(索引)  ====》 ZRANk fruits putao  返回的排名索引是从 0 开始计数(正序)

ZREVRANK key member 返回元素的逆序排名 ====》 ZREVRANK fruits putao  返回的排名索引是从 0 开始计数(逆序)

ZRANGE key start stop [WITHSCORES]  返回指定索引区间元素 ,如果score相同,则按照字典序lexicographical order 的 正序 排列 ,默认按照score从小到大, ====》 ZRANGE fruits  0 -1 withscores    输出 score 的值 和 元素的数据

ZREVRANGE key start stop [WITHSCORES]  返回指定索引区间元素 ,如果score相同,则按照字典序lexicographical order 的 逆序 排列, 默认按照score从大到小,====》 ZREVRANGE fruits 0 -1 withscores   输出 score 的值 和 元素的数据

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]   返回指定分值区间元素 ,

返回score默认属于[min,max]之间,元素按照score升序排列,score相同按照字典序排序,

LIMIT中offset代表跳过多少个元素(跳过开头几个元素),count是返回几个,

使用小括号,修改区间为开区间,例如  (5 (10  表示  5 < score < 10 ,

-inf 和 +inf 表示负无穷和正无穷

====》 ZRANGEBYSCORE fruits 0 11 limit 2 3  查找 0 <= score <= 11 的值,跳过匹配 score 的前 2 条数据,返回 3 条数据

            ZRANGEBYSCORE fruits 0 (11 limit 3 5   查找 0 <= score < 11 的值,跳过匹配 score 的前 3 条数据,返回 5 条数据

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]   返回指定分值区间元素 ,

返回score默认属于[max,min]之间,元素按照score降序排列,score相同字典降序

LIMIT中offset代表跳过多少个元素(跳过开头几个元素),count是返回几个,

使用小括号,修改区间为开区间,例如  10 (5  表示  5 < score <= 10 ,

-inf和+inf表示负无穷和正无穷

====》  ZREVRANGEBYSCORE fruits 11 0 limit 1 5  查找 0 <= score <= 11 的值,跳过匹配 score 的前 1 条数据,返回 5 条数据

             ZREVRANGEBYSCORE fruits (11 0 limit 1 5  查找 0 <= score < 11 的值,跳过匹配 score 的前 1 条数据,返回 5 条数据

 

h4. 数据操作

ZINCRBY key increment member  增加或者减少分值,increment为负数就是减少  ====》  ZINCRBY fruits 3 li     将 li 元素的 score 的值增加 3 

 

h5. 数据集逻辑操作

测试数据:

ZADD z1 10 mangguo 20 xigua 30 shuimitao 40 mugua 50 juzi

ZADD z2 100 mangguo 20 nangua 30 shiliu 400 mugua 50 pingguo

并集

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

numkeys指定key的数量,必须

WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重

AGGREGATE选项,指定并集结果的聚合方式

SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值

MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值

MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值

====》  ZUNIONSTORE zu3 2 z1 z2    默认使用 sum 的方式进行加载

             ZUNIONSTORE zu3 2 z1 z2 aggregate min    指定,并集的聚合方式为 最小值

             ZUNIONSTORE zu3 2 z1 z2 weights 10 0.5 aggregate max    指定,集合中的分值的权重,并集的聚合方式为 最大值

            注意 :参与并集运算的集合较多,会造成Redis服务器阻塞,因此最好放在空闲时间或者备用服务器上进行计算

 

交集

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

numkeys指定key的数量,必须

WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重

AGGREGATE选项,指定并集结果的聚合方式

SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值

MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值

MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值

====》  ZRANGE zi3 0 1000 withscores   默认使用 sum 的方式

              ZINTERSTORE zi3 2 z1 z2 aggregate min    指定,取并集 相同元素最小的 score 值 

             ZINTERSTORE zi3 2 z1 z2 weights 20 1.5 aggregate max   指定,集合中的分值的权重,交集的聚合方式为 最大值

 

I. redis 缓存数据库(分库)

一个实例,可以有 16 个数据库

redis-cli -n 2    ,表示进入 第 2 个缓存库

 

J. 清除缓存数据

FLUSHDB   

清除当前客户端当前所在的缓存库数据

FLUSHALL 

清除redis 缓存库中,所有库中的数据

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值