当前位置: 首页 > news >正文

简单认识 redis -数据类型命令

一.Redis 键(key) 不能存在相同名称的key

//SET  KEY_NAME value  设置一个键
127.0.0.1:6379> set runoobkey redis
OK
127.0.0.1:6379> get runoobkey redis
"redis"
//DEL KEY_NAME   删除键
127.0.0.1:6379> DEL redis
(integer) 0
127.0.0.1:6379> DEL runoobkey
(integer) 1
DUMP KEY_NAME 用于序列化给定 key ,并返回被序列化的值。
127.0.0.1:6379> SET greeting "hello, dumping world!"
OK
127.0.0.1:6379> DUMP greeting
"\x00\x15hello, dumping world!\t\x00\x03\xbfc\xcey\xa1\x9e\xfc"
EXISTS KEY_NAM   用于检查给定 key 是否存在。存在返回1
127.0.0.1:6379> exists greeting
(integer) 1
Expire KEY_NAME TIME_IN_SECONDS  用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。
127.0.0.1:6379> SET runooobkey redis
OK
127.0.0.1:6379> EXPIRE runooobkey 60
(integer) 1
127.0.0.1:6379>
Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP  用于设置 key 的过期时间,key 过期后将不再可用。单位以时间戳格式。
127.0.0.1:6379>  SET runooobkey redis
OK
127.0.0.1:6379>  expireat runooobkey 123554332
(integer) 1
KYS PATTERN  找所有符合给定模式 pattern 的 key 
RANDOMKEY 从当前数据库中随机返回一个 key 。
127.0.0.1:6379> set run1 redis
OK
127.0.0.1:6379> set run2 redis2
OK
127.0.0.1:6379>  set run3 redis3
OK
127.0.0.1:6379> keys run*
1) "run3"
2) "run1"
3) "run2"
127.0.0.1:6379>
127.0.0.1:6379> randomkey
"run2"
127.0.0.1:6379> randomkey
"run2"
127.0.0.1:6379>
127.0.0.1:6379> randomkey
"run3"
127.0.0.1:6379> randomkey
"run3"
127.0.0.1:6379>
 MOVE KEY_NAME DESTINATION_DATABASE  将当前数据库的 key 移动到给定的数据库 db 当中。
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set song "db1"
OK
127.0.0.1:6379> MOVE song 1
(integer) 1
127.0.0.1:6379> exists song
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> exists song
(integer) 1
PERSIST KEY_NAME 用于移除给定 key 的过期时间,使得 key 永不过期。
TTL KEY_NAME  返回 key 的剩余过期时间。
PTTL KEY_NAME 以毫秒为单位返回 key 的剩余过期时间。当 key 不存在时,返回 -2 。
127.0.0.1:6379> expire run2 50
(integer) 1
127.0.0.1:6379> TTl run2
(integer) 44
127.0.0.1:6379> persist run2
(integer) 1
127.0.0.1:6379> TTl run2
(integer) -1
RENAME OLD_KEY_NAME NEW_KEY_NAME  用于修改 key 的名称 。
127.0.0.1:6379> rename greeting run4
OK
127.0.0.1:6379> keys *
1) "run3"
2) "run4"
3) "run2"

SCAN cursor [MATCH pattern] [COUNT count]   

SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 可选,用于指定每次迭代返回的 key 的数量,默认值为 10 。
127.0.0.1:6379> scan 1
1) "0"
2) 1) "run4"2) "run2"
127.0.0.1:6379> scan 0
1) "0"
2) 1) "run3"2) "run4"3) "run2"

    

TYPE KEY_NAME 用于返回 key 所储存的值的类型。返回 key 的数据类型,数据类型有:
  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)
127.0.0.1:6379> type run2
string
127.0.0.1:6379> set
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> set run1 "ddl"
OK
127.0.0.1:6379> type run2
string
127.0.0.1:6379> type run1
string
127.0.0.1:6379> get run2
"redis2"
127.0.0.1:6379> lpush run5 "a,b,c,d,e,f,g"
(integer) 1
127.0.0.1:6379> type run5
list
127.0.0.1:6379>

二.Redis 字符串(String)

SET KEY_NAME VALUE  GET KEY_NAMEGETRANGE KEY_NAME start end 用于获取存储在指定 key 中字符串的子字符串。
127.0.0.1:6379> set run1 "redis"
OK
127.0.0.1:6379> getrange run1 0 2
"red"
127.0.0.1:6379>
GETSET KEY_NAME VALUE  用于设置指定 key 的值,并返回 key 的旧值。GETBIT KEY_NAME OFFSET  用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。Setbit KEY_NAME OFFSET  用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。MGET KEY1 KEY2 .. KEYN 返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
127.0.0.1:6379> getset run1 "redis123"
"redis"
127.0.0.1:6379> getbit run1 1
(integer) 1
127.0.0.1:6379> set run2 "redis456"
OK
127.0.0.1:6379> mget run1 run2
1) "redis123"
2) "redis456"
127.0.0.1:6379>
SETEX KEY_NAME TIMEOUT VALUE    指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
PSETEX key1 EXPIRY_IN_MILLISECONDS value1  以毫秒为单位设置 key 的生存时间。
SETRANGE KEY_NAME OFFSET VALUE   用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
SETNX KEY_NAME VALUE  指定的 key 不存在时,为 key 设置指定的值。
STRLEN KEY_NAME 获取指定 key 所储存的字符串值的长度。
MSET key1 value1 key2 value2 .. keyN valueN  用于同时设置一个或多个 key-value 对。MSETNX key1 value1 key2 value2 .. keyN valueN  用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set run1 "001"
OK
127.0.0.1:6379[1]> setrange run1 1 "1"
(integer) 3
127.0.0.1:6379[1]> get run1
"011"
127.0.0.1:6379[1]> exists run2
(integer) 0
127.0.0.1:6379[1]>  setnx run2 "002"
(integer) 1
127.0.0.1:6379[1]> setnx run1 "002"
(integer) 0
127.0.0.1:6379[1]> get run1
"011"
127.0.0.1:6379[1]> psetex run1 1000 "hello"
OK
127.0.0.1:6379[1]> PTTL run2
(integer) 5509127.0.0.1:6379[1]> mset run1 run2
OK
127.0.0.1:6379[1]> get run1
"run2"127.0.0.1:6379[1]> msetnx run3 "1" run4 "2"
(integer) 1
127.0.0.1:6379[1]> get run3
"1"
127.0.0.1:6379[1]> get run4
"2"
127.0.0.1:6379[1]>127.0.0.1:6379[1]> set run2 "run3"
OK
127.0.0.1:6379[1]> get run2
"run3"127.0.0.1:6379[1]> strlen run1
(integer) 4
127.0.0.1:6379[1]> get run1
"run2"
127.0.0.1:6379[1]>
INCR KEY_NAME   将 key 中储存的数字值增一。key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
INCRBY KEY_NAME INCR_AMOUNT  将 key 中储存的数字加上指定的增量值。
INCRBYFLOAT KEY_NAME INCR_AMOUNT   为 key 中所储存的值加上指定的浮点数增量值。
DECR KEY_NAME 将 key 中储存的数字值减一。
DECRBY KEY_NAME DECREMENT_AMOUNT   key 所储存的值减去指定的减量值。
APPEND KEY_NAME NEW_VALUE   用于为指定的 key 追加值。
127.0.0.1:6379[1]> set run1 1
OK
127.0.0.1:6379[1]> get run1
"1"
127.0.0.1:6379[1]> incr run1
(integer) 2
127.0.0.1:6379[1]> get run6
(nil)
127.0.0.1:6379[1]> incr run6
(integer) 1
1127.0.0.1:6379[1]> incrby run6 10
(integer) 11
127.0.0.1:6379[1]> incrbyfloat run6 1.2
"12.19999999999999929"
127.0.0.1:6379[1]>
127.0.0.1:6379[1]> decr run1
(integer) 0
127.0.0.1:6379[1]> decr run1
(integer) -1127.0.0.1:6379[1]> decrby run1 10
(integer) -11127.0.0.1:6379[1]> get run7
(nil)
127.0.0.1:6379[1]> append run7 "100"
(integer) 3
127.0.0.1:6379[1]> get run7
"100"
127.0.0.1:6379[1]> get run6
"12.19999999999999929"
127.0.0.1:6379[1]> append run6 "100"
(integer) 23
127.0.0.1:6379[1]> get run6
"12.19999999999999929

三.Redis 哈希(Hash) 

 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 可以存储 232 - 1 键值对

HSET KEY_NAME FIELD_NAME "foo"     创建一个哈希键字段
HDEL KEY_NAME FIELD1.. FIELDN     删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
HGET KEY_NAME FIELD_NAME  令用于返回哈希表中指定字段的值。
HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER  用于为哈希表中的字段值加上指定增量值。
HINCRBYFLOAT KEY_NAME FIELD_NAME increment   用于为哈希表中的字段值加上指定浮点数增量值。
HKEYS KEY_NAME 用于获取哈希表中的所有域(field)。
HMGET KEY_NAME FIELD1...FIELDN  用于返回哈希表中,一个或多个给定字段的值。
HLEN KEY_NAME  用于获取哈希表中字段的数量。
HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN   用于同时将多个 field-value (字段-值)对设置到哈希表中。

127.0.0.1:6379[1]> hset run1 field1 "foot"
(integer) 0
127.0.0.1:6379[1]> hget run1 field1
"foot"127.0.0.1:6379[1]> hget run1 cield1
(nil)
127.0.0.1:6379[1]> hsetnx run1 cield1 "qwert"
(integer) 1127.0.0.1:6379[1]> hvals run1
1) "foot"
2) "5"
3) "3.10000000000000009"
4) "1"
5) "qwert"
127.0.0.1:6379[1]>
 HSET KEY_NAME FIELD VALUE  用于为哈希表中的字段赋值 。
 HSETNX KEY_NAME FIELD VALUE  用于为哈希表中不存在的的字段赋值 。
 HVALS KEY_NAME 返回哈希表所有的值。
127.0.0.1:6379[1]> Hset run1 field1 "foo"
(integer) 1
127.0.0.1:6379[1]> Hdel run1 field1
(integer) 1127.0.0.1:6379[1]> hset run1 field1 "foo1"
(integer) 0
127.0.0.1:6379[1]> hset run1 field2 "foo1"
(integer) 1
127.0.0.1:6379[1]> hset run1 field3 "foo1"
(integer) 1127.0.0.1:6379[1]> hexists run1 field1
(integer) 1127.0.0.1:6379[1]> hget run1 field1
"foo1"
127.0.0.1:6379[1]> hset run1 field2 5
(integer) 0
127.0.0.1:6379[1]> hincrby run1 dield2 1
(integer) 1
127.0.0.1:6379[1]> hget run1 field2
"5"
127.0.0.1:6379[1]> hset run1 field3 "1"
(integer) 0
127.0.0.1:6379[1]> hget run1 field3
"1"
127.0.0.1:6379[1]> hincrby run1 field3 2
(integer) 3
127.0.0.1:6379[1]> hget run1 field3
"3"
127.0.0.1:6379[1]> hincrby run1 field3 -2
(integer) 1
127.0.0.1:6379[1]> hget run1 field3
"1"
127.0.0.1:6379[1]> hincrbyfloat run1 field3 2.1
"3.10000000000000009"127.0.0.1:6379[1]> hkeys run1
1) "field1"
2) "field2"
3) "field3"
4) "dield2"127.0.0.1:6379[1]> hlen run1
(integer) 4127.0.0.1:6379[1]> hmget run1 field1 field2 field3 dield2
1) "foo1"
2) "5"
3) "3.10000000000000009"
4) "1"
127.0.0.1:6379[1]> HMSET myhash field1 "Hello" field2 "World"
OK127.0.0.1:6379[1]> hkeys myhash
1) "field1"
2) "field2"
HSCAN KEY_NAME cursor [MATCH pattern] [COUNT count]  用于迭代哈希表中的键值对。
  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 指定从数据集里返回多少元素,默认值为 10 。
127.0.0.1:6379[1]> HSCAN run1 0
1) "0"
2)  1) "field1"2) "foot"3) "field2"4) "5"5) "field3"6) "3.10000000000000009"7) "dield2"8) "1"9) "cield1"10) "qwert"

  四. Redis 列表(List)

  lpush  kye_mame  value  给列表插入键

BLPOP LIST1 LIST2 .. LISTN TIMEOUT   移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
127.0.0.1:6379[3]> lpush run1 "l1"
(integer) 1
127.0.0.1:6379[3]> lpush run1 "l2"
(integer) 2
127.0.0.1:6379[3]> lpush run1 "l3"
(integer) 3
127.0.0.1:6379[3]> blpop run1 run2 run3 10
1) "run1"
2) "l3"
127.0.0.1:6379[3]> blpop run1 100
(nil)
(100.07s)
127.0.0.1:6379[3]> lpush run2 "l1" "l2" "l3"
(integer) 3
127.0.0.1:6379[3]> bRpop run1  10
1) "run1"
2) "l2"
127.0.0.1:6379[3]> bRpop run2  10
1) "run2"
2) "l1"

LINDEX KEY_NAME INDEX_POSITION  用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT   从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
LINSERT key BEFORE|AFTER pivot value    用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。
LRANGE KEY_NAME START END 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
127.0.0.1:6379[3]> lpush run1 "l1" "l2" "l3"
(integer) 3
127.0.0.1:6379[3]> lindex run1 0
"l3"
127.0.0.1:6379[3]> lindex run1 1
"l2"
127.0.0.1:6379[3]> lindex run1 2
"l1"
127.0.0.1:6379[3]> lindex run1 -2
"l2"
127.0.0.1:6379[3]> lpush run2 "l4" "l5" "l6"
(integer) 3
127.0.0.1:6379[3]> brpoplpush run1 run2 100127.0.0.1:6379[3]> rpush run1 "hello" "word"
(integer) 4
127.0.0.1:6379[3]> linsert run1 after "word" "l5"
(integer) 5
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l3"
2) "l2"
3) "hello"
4) "word"
5) "l5"
127.0.0.1:6379[3]> linsert run1 before "word" "l5"
(integer) 6
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l3"
2) "l2"
3) "hello"
4) "l5"
5) "word"
6) "l5"
127.0.0.1:6379[3]>
LLEN KEY_NAME 用于返回列表的长度。Lpop KEY_NAME  用于移除并返回列表的第一个元素。LPUSH KEY_NAME VALUE1.. VALUEN 将一个或多个值插入到列表头部LPUSH KEY_NAME VALUE1..VALUEN 将一个或多个值插入到列表的尾部(最右边)。LREM key count VALUE 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。
127.0.0.1:6379[3]> llen run1
(integer) 6127.0.0.1:6379[3]> lpop run1
"l3"
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l2"
2) "hello"
3) "l5"
4) "word"
5) "l5"127.0.0.1:6379[3]> lpush run1 "l3"
(integer) 6
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l3"
2) "l2"
3) "hello"
4) "l5"
5) "word"
6) "l5"127.0.0.1:6379[3]> lpush run1 "l5"
(integer) 7
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l5"
2) "l3"
3) "l2"
4) "hello"
5) "l5"
6) "word"
7) "l5"127.0.0.1:6379[3]> lrem run1 -2 "l5"
(integer) 2
127.0.0.1:6379[3]> lrange run1 0 -1
1) "l5"
2) "l3"
3) "l2"
4) "hello"
5) "word"
LSET KEY_NAME INDEX VALUE 通过索引来设置元素的值。
LTRIM KEY_NAME START STOP 让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
RPOP KEY_NAME  用于移除列表的最后一个元素,返回值为移除的元素。
RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME 用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
RPUSHX KEY_NAME VALUE1..VALUEN  将一个值插入到已存在的列表尾部(最右边)。
127.0.0.1:6379[3]> lset run1 0 "change"
OK
127.0.0.1:6379[3]> lrange run1 0 -1
1) "change"
2) "l3"
3) "l2"
4) "hello"
5) "word"127.0.0.1:6379[3]> ltrim run1 0 3
OK
127.0.0.1:6379[3]> lrange run1 0 -1
1) "change"
2) "l3"
3) "l2"
4) "hello"127.0.0.1:6379[3]> rpop run1
"hello"
127.0.0.1:6379[3]> lrange run1 0 -1
1) "change"
2) "l3"
3) "l2"
127.0.0.1:6379[3]> lrange run2 0 -1
1) "l1"
2) "l6"
3) "l5"
4) "l4"127.0.0.1:6379[3]> rpoplpush run1 run2
"l2"
127.0.0.1:6379[3]> lrange run1 0 -1
1) "change"
2) "l3"
127.0.0.1:6379[3]> lrange run2 0 -1
1) "l2"
2) "l1"
3) "l6"
4) "l5"
5) "l4"127.0.0.1:6379[3]> rpushx run1 "l4"
(integer) 3
127.0.0.1:6379[3]> lrange run1 0 -1
1) "change"
2) "l3"
3) "l4"

五.Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是 intset 或者 hashtable。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 2^32- 1 (4294967295, 每个集合可存储40多亿个成员)。

SADD KEY_NAME VALUE1..VALUEN  将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
SCARD KEY_NAME  返回集合中元素的数量。
SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN  返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。不存在的集合 key 将视为空集。
SINTER KEY KEY1..KEYN  返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN   令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。
SISMEMBER KEY VALUE  判断成员元素是否是集合的成员。
SMOVE SOURCE DESTINATION MEMBER  将指定成员 member 元素从 source 集合移动到 destination 集合。
SPOP key [count]  于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。
127.0.0.1:6379[3]> select 4
OK
//SADD KEY_NAME VALUE1..VALUEN  将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
127.0.0.1:6379[4]> sadd run1 a b c d
(integer) 4
127.0.0.1:6379[4]> sadd run2 a c
(integer) 2
127.0.0.1:6379[4]> sadd run3 c
(integer) 1
//
127.0.0.1:6379[4]> scard run1
(integer) 4
127.0.0.1:6379[4]> scard run2
(integer) 2
//
127.0.0.1:6379[4]> sdiff run1 run2
1) "b"
2) "d"
//
127.0.0.1:6379[4]> sinter run1 run2
1) "c"
2) "a"
//
127.0.0.1:6379[4]> sinterstore run3 run1 run2
(integer) 2
127.0.0.1:6379[4]> sismember run3 a
(integer) 1
127.0.0.1:6379[4]> sismember run3 c
(integer) 1
//
127.0.0.1:6379[4]> smove run1 run3 b
(integer) 1
127.0.0.1:6379[4]> sismember run3 b
(integer) 1
//
127.0.0.1:6379[4]> spop run1 1
1) "c"
SRANDMEMBER KEY [count]  用于返回集合中的一个随机元素。
SREM KEY MEMBER1..MEMBERN 用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
SUNION KEY KEY1..KEYN   返回给定集合的并集。不存在的集合 key 被视为空集。
SUNIONSTORE destination key [key ...]  将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。
SSCAN key cursor [MATCH pattern] [COUNT count] 用于迭代集合中键的元素,Sscan 继承自 Scan。
  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 指定从数据集里返回多少元素,默认值为 10 。
127.0.0.1:6379[4]> srandmember run1
"a"127.0.0.1:6379[4]> srem run1 a
(integer) 1127.0.0.1:6379[4]> sunion run1 run2
1) "d"
2) "a"
3) "c"127.0.0.1:6379[4]> sunionstore  run2 run1
(integer) 1127.0.0.1:6379[4]> sscan run1 0
1) "0"
2) 1) "d"
127.0.0.1:6379[4]> sscan run1 0 match r
1) "0"
2) (empty list or set)

六.Redis 有序集合命令

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1 。

ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN  于将一个或多个成员元素及其分数值加入到有序集当中。
ZCOUNT KEY_NAME min max  用于计算有序集合中指定分数区间的成员数量。
ZINCRBY KEY_NAME increment member  对有序集合中指定成员的分数加上增量 increment,可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
ZSCORE KEY_NAME member 返回有序集中,成员的分数值。
ZREVRANK KEY_NAME member  返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]  返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
ZREVRANGE KEY_NAME start stop [WITHSCORES] 返回有序集中,指定区间内的成员。成员的位置按分数值递减(从大到小)来排列。有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
127.0.0.1:6379[4]> zadd top1 1 a 1 b 2 c 3 d 3 e
(integer) 5127.0.0.1:6379[4]> zcount top1 1 3
(integer) 5127.0.0.1:6379[4]> zincrby top1 -1 a
"0"127.0.0.1:6379[4]> zscore top1 d
"3"127.0.0.1:6379[4]> zrevrank top1  a
(integer) 4127.0.0.1:6379[4]> zrevrangebyscore top1 3 1
1) "e"
2) "d"
3) "c"
4) "b"127.0.0.1:6379[4]> zrevrange top1 1 3
1) "d"
2) "c"
3) "b"
ZINTERSTORE destination numkeys KEY_NAME [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE sum|min|max]
  • destination:结果有序集合的名称。
  • numkeys:要计算交集的有序集合的数量。
  • key:参与计算的有序集合的名称。
  • WEIGHTS weight [weight ...]:指定每个有序集合的权重。默认权重为 1。
  • AGGREGATE sum|min|max:指定交集结果的聚合方式。默认是 sum(求和)。
127.0.0.1:6379[4]> zrange top1 0 -1
1) "a"
2) "b"
3) "j"
4) "c"
5) "g"
6) "d"
7) "e"
8) "h"
127.0.0.1:6379[4]> zrange top2 0 -1
1) "f"
2) "g"
3) "h"
4) "k"
5) "j"
127.0.0.1:6379[4]> zinterstore top 2 top1 top2
(integer) 3
127.0.0.1:6379[4]> zrange top 0 -1
1) "g"
2) "j"
3) "h"
ZLEXCOUNT KEY_NAME MIN MAX  计算有序集合中指定字典区间内成员数量。
ZRANGEBYLEX KEY_NAME min max [LIMIT offset count] 用于在有序集合(sorted set)中按照字典序(lexicographical order)获取指定范围内的成员。
  • key:键名,指定要操作的有序集合。
  • min 和 max:字典序范围的边界值。这两个值可以是负无穷大(-)或正无穷大(+),也可以是具体的字符串值。字符串值表示有序集合中成员的字典序边界。
  • LIMIT offset count:可选参数,用于限制返回结果的数量。offset 表示跳过前面多少个元素,count 表示返回多少个元素。
ZRANGEBYSCORE KEY_NAME min max [WITHSCORES] [LIMIT offset count]  返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
&&&&   ZRANGEBYSCORE zset (1 5   返回所有符合条件 1 < score <= 5 的成员,而
ZRANGE KEY_NAME start stop [WITHSCORES] 返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。
127.0.0.1:6379[4]> zlexcount top3 - +
(integer) 6127.0.0.1:6379[4]> zrangebylex top3 - +
1) "a"
2) "b"
3) "c"
4) "d"
5) "h"
6) "j"127.0.0.1:6379[4]> zrangebyscore top3 0 4
1) "a"
2) "b"
3) "c"
4) "d"
5) "h"
6) "j"127.0.0.1:6379[4]> zrange top3 0 4
1) "a"
2) "b"
3) "c"
4) "d"
5) "h"
ZREM KEY_NAME member [member ...] 用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
ZREMRANGEBYLEX KEY_NAME min max  用于移除有序集合中给定的字典区间的所有成员。
ZREMRANGEBYRANK KEY_NAME start stop  用于移除有序集中,指定排名(rank)区间内的所有成员。
ZREMRANGEBYSCORE KEY_NAME min max  用于移除有序集中,指定分数(score)区间内的所有成员。
127.0.0.1:6379[4]> zrange top3 0 4
1) "a"
2) "b"
3) "c"
4) "d"
5) "h"
127.0.0.1:6379[4]> zrem top3 j a
(integer) 2
127.0.0.1:6379[4]> zrange top3 0 -1
1) "b"
2) "c"
3) "d"
4) "h"
127.0.0.1:6379[4]> zremrangebylex top3 [b [c
(integer) 2
127.0.0.1:6379[4]> zrange top3 0 -1
1) "d"
2) "h"
127.0.0.1:6379[4]> zremrangebyrank top3 1 3
(integer) 1
127.0.0.1:6379[4]> zrange top3 0 -1
1) "d"
127.0.0.1:6379[4]> zremrangebyscore top3 0 4
(integer) 1
127.0.0.1:6379[4]> zrange top3 0 -1
(empty list or set)
 ZSCAN KEY_NAME cursor [MATCH pattern] [COUNT count]  于迭代有序集合中的元素(包括元素成员和元素分值)
  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 指定从数据集里返回多少元素,默认值为 10 。
127.0.0.1:6379[4]> zscan top2 0
1) "0"
2)  1) "f"2) "1"3) "g"4) "2"5) "h"6) "3"7) "k"8) "3"9) "j"10) "4"

相关文章:

简单认识 redis -数据类型命令

一.Redis 键(key) 不能存在相同名称的key //SET KEY_NAME value 设置一个键 127.0.0.1:6379> set runoobkey redis OK 127.0.0.1:6379> get runoobkey redis "redis" //DEL KEY_NAME 删除键 127.0.0.1:6379> DEL redis (integer) 0 127.0.0.1:6379>…...

Python 语言学习——应用1.2 数字图像处理(第二节,变换)

目录 1.基础知识 1.图像几何变换概念 2.图像几何变换方式 3.插值运算 4.几何变换步骤 2.各类变换 1.位置变换 2.形状变换 3.代数运算 3.实战演练 1.基础知识 1.图像几何变换概念 在图像处理过程中&#xff0c;为了观测需要&#xff0c;常常需要对 图像进行几何变换&am…...

【QT Quick】页面布局:手动定位与坐标系转换

在这篇教程中&#xff0c;我们将详细介绍在 QT Quick 中如何手动定位元素以及坐标系转换的概念和应用。手动定位不仅仅是指定 x、y 坐标&#xff0c;更涉及坐标系的管理。我们会从最基本的手动定位开始&#xff0c;逐步扩展到更复杂的坐标系转换操作。 坐标系 默认坐标系&…...

uniapp自定义导航,全端兼容

我们在用uniapp 开发应用的时候&#xff0c;有的页面需要自定义导航&#xff0c; 1.如果普通的直接使用uni 扩展柜组件的 uni-nav-bar 也基本够用&#xff0c; 2.如果稍微带点自定义的这个值无法支持的&#xff0c;特别在小程序端&#xff0c;胶囊是会压住右边的按钮的 自定…...

[论文阅读] DVQA: Understanding Data Visualizations via Question Answering

原文链接&#xff1a;http://arxiv.org/abs/1801.08163 启发&#xff1a;没太读懂这篇论文&#xff0c;暂时能理解的就是本文提出了一个专门针对条形图问答的数据集DVQA以及一个端到端模型SANDY&#xff0c;模型有两个版本&#xff0c;Oracle和OCR。主要解决的问题是固定词表无…...

【PostgreSQL】实战篇——数据备份和恢复的最佳实践和工具

数据备份和恢复是确保数据安全性和可用性的关键环节。无论是由于硬件故障、软件错误、数据损坏还是人为错误&#xff0c;能够快速恢复数据都是保护业务连续性的重要措施。 PostgreSQL 提供了多种备份和恢复工具和方法&#xff0c;其中最常用的包括 pg_dump、pg_restore 和点时…...

代码随想录算法训练营第二十九天|93.复原IP地址 78.子集 90.子集II

93.复原IP地址 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"…...

【mysql】使用AbstractRoutingDataSource实现多数据源 与 获取mapper上注解

使用AbstractRoutingDataSource实现多数据源 与 获取mapper上注解 背景 随着业务发展速度越来越快&#xff0c;数据的增长也呈现倍数级别增长&#xff0c;数据库的压力&#xff0c;对于查询和写入等所有操作&#xff0c;都依赖于主库&#xff0c;其实有一些对于时效性要求不高…...

希沃冰点还原

要取消希沃冰点还原&#xff0c;可以按照以下步骤进行&#xff1a; 打开希沃冰点还原的应用或程序。 在应用或程序的界面上&#xff0c;寻找设置选项或菜单。 点击或选择设置选项或菜单&#xff0c;进入设置界面。 在设置界面上&#xff0c;查找“取消”或“停止”等相关选项…...

Hadoop服务端口号、Spark端口号、Hive端口号以及启动命令

文章目录 1. 服务端口号1.1 Hadoop相关的服务端口号1.2 Spark相关的服务端口号1.3 Hive的连接端口 2. 服务启动指令 1. 服务端口号 1.1 Hadoop相关的服务端口号 HDFS的web页面访问端口 9870HDFS 的程序访问端口 8020Yarn的访问端口 8088历史日志访问端口 19888 1.2 Spark相关…...

【C++】--类和对象(3)

&#x1f911;个人主页: 起名字真南 &#x1f911;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 深入构造函数2 类型转换3 static成员4 友元函数5 内部类6 匿名对象 1 深入构造函数 之前我们实现构造函数的时候&#xff0c;初始化成员变量都是在函数体内赋值&#xff0c…...

国外电商系统开发-运维系统文件上传-高级上传

如果您要上传文件到10台服务器中&#xff0c;有3台服务器的路径不是一样的&#xff0c;那么在这种情况下您就可以使用本功能&#xff0c;单独执行不一样的路径 点击【高级】上传...

【MongoDB】mongodb | 部署 | 常用命令

一、概述 基于mongodb的tcp连接无数据上报&#xff0c;服务器强踢监测。 物联网项目&#xff0c;tcp协议&#xff0c;基于4G卡&#xff0c;设备由于某些原因会断开重连&#xff0c;但是tcp没有断开&#xff0c;导致tcp持续累加&#xff0c;浪费资源。 建立机制&#xff1a; 当t…...

【Chrome浏览器插件--资源嗅探猫抓】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、资源嗅探插件---猫抓二、使用步骤总结 一、资源嗅探插件—猫抓 猫抓是一个浏览器插件&#xff0c;可以检测当前网页中的一些资源文件&#xff0c;可设置嗅探的…...

2.4Mybatis——缓存机制

2.4Mybatis——缓存机制 缓存配置一二级缓存一级缓存二级缓存 合集总览&#xff1a;Mybatis框架梳理 讲真&#xff0c;Mybatis缓存这块的记忆已经模糊了。刚好此时写测试用例出现一个BUG&#xff0c;就以这个问题作为切入点来梳理一下。 Testpublic void test(){Address ad…...

移动技术开发:文件的读取

1 实验名称 文件的读写 2 实验目的 掌握Android中读写文件的实现方法。 3 实验源代码 布局文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…...

Linux 中的 Makefile 伪目标详解

在 Linux 环境中&#xff0c;Makefile 是构建项目的重要工具&#xff0c;它通过定义规则&#xff0c;指导 make 工具如何编译和链接程序。通常我们会在 Makefile 中定义目标&#xff08;target&#xff09;&#xff0c;这些目标通常对应文件名。然而&#xff0c;有一种特殊类型…...

Java基础(中)

变量 成员变量与局部变量的区别 语法形式&#xff1a;从语法形式上看&#xff0c;成员变量是属于类的&#xff0c;而局部变量是在代码块或方法中定义的变量或是方法的参数&#xff1b;成员变量可以被 public,private,static 等修饰符所修饰&#xff0c;而局部变量不能被访问控…...

Leetcode热题100-200 岛屿数量

Leetcode热题100-200 岛屿数量 1. 题目描述2. 代码实现1. dfs算法2. bfs算法 1. 题目描述 200 岛屿数量 2. 代码实现 1. dfs算法 class Solution { public:int numIslands(vector<vector<char>>& grid) {int m grid.size(), n grid[0].size();int res 0…...

大数据新视界 --大数据大厂之 GraphQL 在大数据查询中的创新应用:优化数据获取效率

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...