1、redis的数据类型
Bitmaps 这个其实还是string类型,只是redis提供了一些命令可以对string每一位进行处理。
2、对key的操作
EXISTS 和 DEL
> set mykey hello
OK
> exists mykey
(integer) 1
> del mykey
(integer) 1
> exists mykey
(integer) 0
TYPE 可以获得对应的key的值的类型
> set mykey x
OK
> type mykey
string
> del mykey
(integer) 1
> type mykey
none
3、String数据类型
基本用法:
> set mykey somevalue
OK
> get mykey
"somevalue"
SET 命令可以带其它参数,nx表示 mykey不存在才能set成功,xx表示mykey存在才能设置成功
> set mykey newval nx
(nil)
> set mykey newval xx
OK
如果值是数值,则可以进行算术运算,INCR是原子性的,因为在执行这个命令的过程,即read-加1-set的过程中,其它客户端的请求不会被处理。
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
此外,减法运算的命令是 DECR and DECRBY.
一次性设置多个key的值,或读取多个key的值
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
GETSET 命令,设置新值并返回老值。
4、Lists数据类型
Lists数据类型底层数据结构是linkedList,所以插入删除数据会比较快,查询两头的数据也比较快。但是如果要求快速查询中间的元素推荐使用sorted set数据类型。
放入元素并查询某个范围的元素,rpush表示插入Lists的最右边,lpush表示插入Lists的最左边,这两个命令都可以跟多个参数,一次性插入多个元素。
lrange 接收两个indexs, 这两个参数都可以为负数,表示从倒数第几个元素开始算。
> rpush mylist A
(integer) 1
> rpush mylist B
(integer) 2
> lpush mylist first
(integer) 3
> lrange mylist 0 -1
1) "first"
2) "A"
3) "B"
pop元素, rpop和lpop命令分别可以从右边和左边pop元素,如果Lists中没有元素,则返回null,并且隔一段时间后会再次发起pop命令,因此如果lists中一直没有元素,那么客户端就会发送很多没有意义的命令,所以redis提供了 BRPOP and BLPOP 命令,如果lists中元素数量为空,这两个命令会阻塞,直到lists中有元素。这两个命令可以跟多个lists的key,表示同时监听多个lists,最后一个参数是timeout 单位是秒,如果超过这个timeout,lists中还没有元素,也会返回。如果有多个客户端对同一个lists执行了brpop或blpop命令,当lists中有元素返回时,那么第一个执行命令的客户端会优先返回结果。
> rpush mylist a b c
(integer) 3
> rpop mylist
"c"
> rpop mylist
"b"
> rpop mylist
"a"
> brpop tasks 5
1) "tasks"
2) "do_something"
LTRIM 命令接收两个indexs,用来设置Lists的元素范围,超过这个范围的元素会被删除。
> rpush mylist 1 2 3 4 5
(integer) 5
> ltrim mylist 0 2
OK
> lrange mylist 0 -1
1) "1"
2) "2"
3) "3"
最后,不止是Lists 对于所有集合类型的数据,当第一次执行添加元素的操作时,如果对应的key不存在,redis会自动建立一个空的集合,然后把元素放进去。当集合中的元素被全部取出时,redis会自动删除对应的key。
5、Hashes数据类型
通常用来存储一个对象,或一组相关的属性。
> hmset user:1000 username antirez birthyear 1977 verified 1
OK
> hget user:1000 username
"antirez"
> hget user:1000 birthyear
"1977"
> hgetall user:1000
1) "username"
2) "antirez"
3) "birthyear"
4) "1977"
5) "verified"
6) "1"
一次性获取多个属性值
> hmget user:1000 username birthyear no-such-field
1) "antirez"
2) "1977"
3) (nil)
对某个field的值进行操作,例如
> hincrby user:1000 birthyear 10
(integer) 1987
> hincrby user:1000 birthyear 10
(integer) 1997
6、Sets数据类型
添加元素并获取所有元素
> sadd myset 1 2 3
(integer) 3
> smembers myset
1. 3
2. 1
3. 2
检查某个元素是否存在
> sismember myset 3
(integer) 1
> sismember myset 30
(integer) 0
使用场景,表示对象之间的关系,例如表示一个用户1000 拥有的1 2 5 77 四个tagId
> sadd news:1000:tags 1 2 5 77
(integer) 4
> smembers news:1000:tags
1. 5
2. 1
3. 77
4. 2
使用场景,表示1 2 5 77 四个 tagId所标记的用户
> sadd tag:1:news 1000
(integer) 1
> sadd tag:2:news 1000
(integer) 1
> sadd tag:5:news 1000
(integer) 1
> sadd tag:77:news 1000
(integer) 1
使用场景,获取1, 2, 10, and 27 四个tagId的商户的合集,处理合集,并集、差集也可以计算。
> sinter tag:1:news tag:2:news tag:10:news tag:27:news
... results here ...
随机pop出一个元素, SPOP
> spop game:1:deck
"C6"
获取set的元素个数 SCARD.
> scard game:1:deck
(integer) 47
7、Sorted sets数据类型
每个元素都绑定了一个score, 这个score是一个浮点数,用于排序,排序规则如下:
如果A.score > B.score 则A>B
如果A.score = B.score 则按A和B的字典顺序判断大小。A和B不可能相同,因为sorted set中不存在相同的元素。
执行添加操作,ZADD命令 第二个参数是score 第三个参数是值
> zadd hackers 1940 "Alan Kay"
(integer) 1
> zadd hackers 1957 "Sophie Wilson"
(integer) 1
> zadd hackers 1953 "Richard Stallman"
(integer) 1
> zadd hackers 1949 "Anita Borg"
(integer) 1
> zadd hackers 1965 "Yukihiro Matsumoto"
(integer) 1
> zadd hackers 1914 "Hedy Lamarr"
(integer) 1
> zadd hackers 1916 "Claude Shannon"
(integer) 1
> zadd hackers 1969 "Linus Torvalds"
(integer) 1
> zadd hackers 1912 "Alan Turing"
(integer) 1
查询sorted中某个范围的元素,结果是有序的
> zrange hackers 0 -1
1) "Alan Turing"
2) "Hedy Lamarr"
3) "Claude Shannon"
4) "Alan Kay"
5) "Anita Borg"
6) "Richard Stallman"
7) "Sophie Wilson"
8) "Yukihiro Matsumoto"
9) "Linus Torvalds"
如果想反序查询
> zrevrange hackers 0 -1
1) "Linus Torvalds"
2) "Yukihiro Matsumoto"
3) "Sophie Wilson"
4) "Richard Stallman"
5) "Anita Borg"
6) "Alan Kay"
7) "Claude Shannon"
8) "Hedy Lamarr"
9) "Alan Turing"
如果想同时输出score,就加上WITHSCORES参数
> zrange hackers 0 -1 withscores
1) "Alan Turing"
2) "1912"
3) "Hedy Lamarr"
4) "1914"
5) "Claude Shannon"
6) "1916"
7) "Alan Kay"
8) "1940"
9) "Anita Borg"
10) "1949"
11) "Richard Stallman"
12) "1953"
13) "Sophie Wilson"
14) "1957"
15) "Yukihiro Matsumoto"
16) "1965"
17) "Linus Torvalds"
18) "1969"
ZRANGEBYSCORE 根据score的范围查询元素,例如查询score在负无穷大 到 1950之间的数据
> zrangebyscore hackers -inf 1950
1) "Alan Turing"
2) "Hedy Lamarr"
3) "Claude Shannon"
4) "Alan Kay"
5) "Anita Borg"
删除score在某个范围之间的元素
> zremrangebyscore hackers 1940 1960
(integer) 4
查询某个元素在sorted sets中的排名
> zrank hackers "Anita Borg"
(integer) 4
本文发布于:2024-02-02 16:58:32,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170686431345182.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |