Redis五大数据类型

Redis 数据类型

      Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1、string(字符串)
127.0.0.1:6379> set a 2048  # 给'键'a赋值(设置给定key的值。如果key已经存储其他值,SET就覆写旧值,且无视类型。)
OK
127.0.0.1:6379> get a    # 获取'键'a对应的value
"2048"
127.0.0.1:6379> del a    # 删除'键'a及其对应的value
(integer) 1
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379> keys *    # 获取所有已经赋值的'键'
1) "q"
2) "15"
3) "p"
4) "xiaoshuo"
5) "mycounter"
127.0.0.1:6379> del p q 15    # 同时删除多个元素
(integer) 3
127.0.0.1:6379> keys *
1) "xiaoshuo"
2) "mycounter"
127.0.0.1:6379> mset a1 123 a2 456 a3 789    # mset 同时给多个key进行赋值
OK
127.0.0.1:6379> mget a1 a2 a3    # mget 同时获取多个key对应的value
1) "123"
2) "456"
3) "789"
127.0.0.1:6379> set a4 999
OK
127.0.0.1:6379> incr a4    # 递增,每次增加1
(integer) 1000
127.0.0.1:6379> incr a4
(integer) 1001
127.0.0.1:6379> decr a4    # 递减,每次减少1
(integer) 1000
127.0.0.1:6379> incrby a4 100   # 增加 100
(integer) 1100
127.0.0.1:6379> decrby a4 500   # 减少 500
(integer) 600
127.0.0.1:6379> incrbyfloat a4 5.5    # 增加小数
"605.5"
127.0.0.1:6379> incrbyfloat a4 15
"620.5"

127.0.0.1:6379> set a5 7
OK
127.0.0.1:6379> get a5
"7"
127.0.0.1:6379> append a5 18   # 追加
(integer) 3
127.0.0.1:6379> get a5
"718"

127.0.0.1:6379> set a6 123456789
OK
127.0.0.1:6379> get a6
"123456789"
127.0.0.1:6379> getrange a6 0 0   # getrange key start end :获取存储在指定key中字符串的子字符串。字符串的截取范围由 start和end两个偏移量决定(包括start和end 在内)。
"1"
127.0.0.1:6379> getrange a6 0 1
"12"
127.0.0.1:6379> getrange a6 0 -1
"123456789"
127.0.0.1:6379> getrange a6 -2 -1
"89"
2、hash(哈希)

Redis hash 是一个string类型的field和value的映射表,是一个键值(key=>value)对集合, hash特别适合用于存储对象。

在以下代码中,我们设置了 redis 的一些描述信息(name, author, likes, desc) 到哈希表的 xiaoshuo 中

127.0.0.1:6379> hset xiaoshuo name jack   # key field value 赋值
(integer) 1
# Redis Hset 命令用于为哈希表中的字段赋值.
# 如果哈希表不存在,一个新的哈希表被创建并进行hset操作。
# 如果字段已经存在于哈希表中,旧值将被覆盖。
127.0.0.1:6379> hset xiaoshuo author chendong
(integer) 1
127.0.0.1:6379> hset xiaoshuo desc hahah
(integer) 1
127.0.0.1:6379> hgetall xiaoshuo    # 读取所有的redis hash字段
1) "name"
2) "jack"
3) "author"
4) "chendong"
5) "desc"
6) "hahah"
127.0.0.1:6379> hkeys xiaoshuo    # 获取所有哈希表中的字段
1) "name"
2) "author"
3) "desc"
127.0.0.1:6379> hvals xiaoshuo    # 获取哈希表中所有值
1) "jack"
2) "chendong"
3) "hahah"
127.0.0.1:6379> hdel xiaoshuo name    # 删除哈希表中字段为name的值
(integer) 1
127.0.0.1:6379> hkeys xiaoshuo
1) "author"
2) "desc"
127.0.0.1:6379> hgetall xiaoshuo
1) "author"
2) "chendong"
3) "desc"
4) "hahah"
3、list(双向链表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的左边(lpush)或者右边(rpush)

判断value类型:type key

127.0.0.1:6379> lpush lt 123 456 789    # 依次从左边插入值
(integer) 3
127.0.0.1:6379> lrange lt 0 -1    # 读取
1) "789"
2) "456"
3) "123"
127.0.0.1:6379> rpush lt 111 222 333    # 依次从右边插入值
(integer) 6
127.0.0.1:6379> lrange lt 0 -1   
1) "789"
2) "456"
3) "123"
4) "111"
5) "222"
6) "333"
127.0.0.1:6379> type lt    # 判断value类型
list

127.0.0.1:6379> lpop lt    # 移除并获取列表第一个元素
"789"
127.0.0.1:6379> lrange lt 0 -1
1) "456"
2) "123"
3) "111"
4) "222"
5) "333"
127.0.0.1:6379> rpop lt    # 移除并获取列表最后一个元素
"333"
127.0.0.1:6379> lrange lt 0 -1
1) "456"
2) "123"
3) "111"
4) "222"

127.0.0.1:6379> llen lt    # 打印列表元素个数
(integer) 4
4、set(集合)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

127.0.0.1:6379> sadd b1 1 2 3    # 向集合添加一个或多个成员
(integer) 1
127.0.0.1:6379> sadd b1 p
(integer) 1
127.0.0.1:6379> scard b1    # 获取集合的成员数
(integer) 4
127.0.0.1:6379> smembers b1    # 返回集合中的所有成员
1) "1"
2) "3"
3) "p"
4) "2"

127.0.0.1:6379> sadd b1 1 2 3 4 5 6    
(integer) 6
127.0.0.1:6379> spop b1    # 移除并返回集合中的一个随机元素
"6"
5、zset(有序集合)

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

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

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

127.0.0.1:6379> zadd c1 10 m1    # 添加
(integer) 1
127.0.0.1:6379> zadd c1 11 m2
(integer) 1
127.0.0.1:6379> zadd c1 12 m3
(integer) 1
127.0.0.1:6379> zscore c1 m1    # 读取
"10"
127.0.0.1:6379> zscore c1 m2
"11"
127.0.0.1:6379> zrange c1 0 -1    # 顺序排序
1) "m1"
2) "m2"
3) "m3"
127.0.0.1:6379> zscore c1 m3
"12"
127.0.0.1:6379> zrevrange c1 0 -1    # 倒序排序
1) "m3"
2) "m2"
3) "m1"
127.0.0.1:6379> zscore c1 m3
"12"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值