redi数据类型详解

一 hash类型:
1 redis hash
–是一个string类型的filed和value的映射表(列和值)
–一个key可对应多个field,一个filed对应一个value
–将一个对象存储为hash类型,较于每个字段都存储称string类型更能节省内存

2 设置hash变量

192.168.4.50:6350> hset site google 'www.google.cn'
(integer) 1
192.168.4.50:6350> hset site baidu 'www.baidu.com'
(integer) 1
192.168.4.50:6350> hset site taobao www.taobao.com
(integer) 1
192.168.4.50:6350> hset site tedu www.tedu.com
(integer) 1

192.168.4.50:6350> type site           //变量类型为hash
hash

2 获取hash表中field的值:

192.168.4.50:6350> hget site baidu
"www.baidu.com"
192.168.4.50:6350> hget site taobao
"www.taobao.com"

3 同时给hash表中多个field赋值

192.168.4.50:6350> hmset site sina www.sina.com.cn jd www.jingdong.com sogou www.sogou.com

4 返回hash表中多个field的值

192.168.4.50:6350> hmget site google baidu taobao tedu sina jd sogou
1) "www.google.cn"
2) "www.baidu.com"
3) "www.taobao.com"
4) "www.tedu.com"
5) "www.sina.com.cn"
6) "www.jingdong.com"
7) "www.sogou.com"

5 返回hash表中所有field名称

192.168.4.50:6350> hkeys site
1) "google"
2) "baidu"
3) "taobao"
4) "tedu"
5) "sina"
6) "jd"
7) "sogou"

6 返回hash表中所有key名和对应的值列表

192.168.4.50:6350> hgetall site
 1) "google"
 2) "www.google.cn"
 3) "baidu"
 4) "www.baidu.com"
 5) "taobao"
 6) "www.taobao.com"
 7) "tedu"
 8) "www.tedu.com"
 9) "sina"
10) "www.sina.com.cn"
11) "jd"
12) "www.jingdong.com"
13) "sogou"
14) "www.sogou.com"

7 返回hash表中所有的key的值

192.168.4.50:6350> hvals site
1) "www.google.cn"
2) "www.baidu.com"
3) "www.taobao.com"
4) "www.tedu.com"
5) "www.sina.com.cn"
6) "www.jingdong.com"
7) "www.sogou.com"

8 删除hash表中多个field的值,不存在则忽略

192.168.4.50:6350> hdel site baidu taobao
(integer) 2

9 删除变量类型为hash的site变量

192.168.4.50:6350> del site
(integer) 1

二 list列表类型:
1 list列表简介:
–redis的list是一个字符队列
–先进后出
–一个key可以有多个值

2 将一个或多个值value插入到列表stuname的表头,如果stuname不存在,则创建stuname

192.168.4.50:6350> lpush stuname bob kenji lily tom lucy
(integer) 10

192.168.4.50:6350> type stuname  //stuname的类型为list
list

2 从开始位置读取stuname的值到stop结束

192.168.4.50:6350> lrange stuname 0 -1  //从开始读到结束为止
192.168.4.50:6350> lrange stuname 0 2    //从0位开始,读到2位为止
1) "lucy"
2) "tom"
3) "lily"

3 移除并返回列表头原书数据,stuname不存在则返回nil(删除列表的第一个元素)

192.168.4.50:6350> lpop stuname
"lucy"

4 返回列表stuname的长度

192.168.4.50:6350> llen stuname
(integer) 9

5 返回列表中第Index个值

192.168.4.50:6350> lindex stuname 0
"tom" 
192.168.4.50:6350> lindex stuname 2
"kenji"
192.168.4.50:6350> lindex stuname -1
"lily"

6 将key中index位置的值修改为value

192.168.4.50:6350> lset stuname 0 chihiro
OK
192.168.4.50:6350> lindex stuname 0
"chihiro"

7 将value插入到stuname的末尾

192.168.4.50:6350> rpush stuname dvd
(integer) 10
192.168.4.50:6350> lindex stuname -1
"dvd"

8 删除并返回key末尾的值

192.168.4.50:6350> rpop stuname
"dvd"

三 字符串操作
1 设置key及值,过期时间使用秒(ex) 或毫秒(px)为单位

192.168.4.50:6350> set name "lisi" ex 30
OK
192.168.4.50:6350> ttl name
(integer) 28
192.168.4.50:6350> ttl name
(integer) 24

2 从偏移量开始复写key的特定位的值

192.168.4.50:6350> set content "hello world"
OK
192.168.4.50:6350> setrange content 6 "redis"  //从第7个字符开始修改
(integer) 11
192.168.4.50:6350> get content
"hello redis"

3 统计字符串的长度

192.168.4.50:6350> strlen content
(integer) 11

4 存在则追加,不存在则创建key和value,返回key长度

192.168.4.50:6350> append myname chihiro
(integer) 7
192.168.4.50:6350> append myname aaa
(integer) 10
192.168.4.50:6350> get myname
"chihiroaaa"

5 对key所存储字串,设置或清楚特定偏移量上的位(bit),value值可以为1或0.offset为0-2^32之间,key不存在则创建key
–ascii表中,a对应的二进制数为01100001 b对应的二进制数为01100010
–setbit key offset value

192.168.4.50:6350> set x a
OK
192.168.4.50:6350> setbit x 6 1
(integer) 0
192.168.4.50:6350> setbit x 7 0
(integer) 1
192.168.4.50:6350> get x
"b"

–统计字串中被设置为1的比特为数量

192.168.4.50:6350> bitcount x
(integer) 3

–场景说明:
记录为嗯占用户上线频率,入用户A上线了多少天等类似的数据
如用户在mohican上线,则使用setbit,以用户名为key,将网站上线日为offset
并在该offset上岗设置为1,最后计算用户总上线次数时,使用bitcount用户名即可
这样,即使网站运行10年,每个用户仅占用10×365比特位即456字节

6 将key中的值减1 ,key不存在则先初始化为0,再减1

192.168.4.50:6350> set text 10
OK
192.168.4.50:6350> decr text
(integer) 9
192.168.4.50:6350> get text
"9"

7 将key中的值,减去指定的值

192.168.4.50:6350> set count 100
OK
192.168.4.50:6350> decrby count 20
(integer) 80
192.168.4.50:6350> get count
"80"

8 返回字串值中的子字串,截取范围为start和end

   ---- getrange key start end
192.168.4.50:6350> set text "hello,the world"
OK
192.168.4.50:6350> getrange text -5 -1
"world"
192.168.4.50:6350> getrange text 0 4
"hello"

9 将key的值加1,如果key不存在,则初始为0后再加1,主要应为为计数器

192.168.4.50:6350> set page 20
OK
192.168.4.50:6350> incr page
(integer) 21
192.168.4.50:6350> get page
"21"

10 将key的值增加指定的值

192.168.4.50:6350> incrby page 29
(integer) 50
192.168.4.50:6350> get page
"50"

11 为key中所存储的值加上浮点数增量increment

192.168.4.50:6350> set num 11.1
OK
192.168.4.50:6350> incrbyfloat num 9.2
"20.3"

12 获取一个或多个key的值,空格分隔,具有原子性

192.168.4.50:6350> mget b c d e
1) "2"
2) "3"
3) "4"
4) "5"

13 设置多个key及值,空格分隔,具有原子性

192.168.4.50:6350> mset ww 11 ee 22 rr 33 tt 44
OK

猜你喜欢

转载自blog.csdn.net/weixin_42104231/article/details/84798236