【第四章】redis都有哪些数据类型?分别在哪些场景下使用比较合适?

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

  • string

    • string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
    • string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
    • string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
127.0.0.1:6379> set mykey "value"
OK
127.0.0.1:6379> get mykey
"value"
127.0.0.1:6379>
  • hash

    • Redis hash 是一个键值(key=>value)对集合。

    • Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

127.0.0.1:6379> hmset user username zhangsan pwd 123456 sex 1
OK
127.0.0.1:6379> hget user username
"zhangsan"
127.0.0.1:6379> hget user pwd
"123456"
127.0.0.1:6379> hget user sex
"1"
127.0.0.1:6379> hmget user username pwd sex
1) "zhangsan"
2) "123456"
3) "1"
127.0.0.1:6379>
  • list

    • Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
    • 可以通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。
    • 可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 list 实现分页查询,这个是很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。
127.0.0.1:6379> lpush mylist 1
(integer) 1
127.0.0.1:6379> lpush mylist 2
(integer) 2
127.0.0.1:6379> lpush mylist 3
(integer) 3
127.0.0.1:6379> lrange mylist 0 10
1) "3"
2) "2"
3) "1"

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

  • set

    • Redis 的 Set 是 string 类型的无序集合。
    • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
    • 果你需要对一些数据进行快速的全局去重,你当然也可以基于 jvm 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于 redis 进行全局的 set 去重。
    • 可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧。
#-------操作一个set-------
# 添加元素
sadd mySet 1

# 查看全部元素
smembers mySet

# 判断是否包含某个值
sismember mySet 3

# 删除某个/些元素
srem mySet 1
srem mySet 2 4

# 查看元素个数
scard mySet

# 随机删除一个元素
spop mySet

#-------操作多个set-------
# 将一个set的元素移动到另外一个set
smove yourSet mySet 2

# 求两set的交集
sinter yourSet mySet

# 求两set的并集
sunion yourSet mySet

# 求在yourSet中而不在mySet中的元素
sdiff yourSet mySet
  • sorted set

    • sorted set 是排序的 set,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。
zadd board 85 zhangsan
zadd board 72 lisi
zadd board 96 wangwu
zadd board 63 zhaoliu

# 获取排名前三的用户(默认是升序,所以需要 rev 改为降序)
zrevrange board 0 3

# 获取某用户的排名
zrank board zhaoliu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值