Redis从入门到实战(十一、字符串(String)总结)

115 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

String、总结

  • String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。
  • 常规key-value缓存应用: 常规计数:微博数,粉丝数等。

问题1:Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?

比如在我们开发一个项目中,需要将用户和产品的信息存入到id,这时用户的id和产品的id可能都为1,那我们怎么存储到redis,我们知道redis的key不能重复。

这时我们就要看一下key的结构了:

Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:

例如:项目名称:业务名称:类型:id

这个格式并非固定,也可以根据自己的需求来删除或添加词条。

例如我们的项目名称叫 blog,有user和product两种不同类型的数据,我们可以这样定义key:

user相关的key:blog:user:1

product相关的key:blog:product:1

如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:

keyvalue
blog:user:1{"id":1, "name": "xiaoming", "phone": 123456789}
blog:product:1{"id":1, "name": "huwei", "color": "red"}

添加的数据:

'{"id":1, "name":"xiaoming", "phone": 12345678911}'
'{"id":2, "name":"xiaohong", "phone": 18212121111}'
'{"id":1, "name":"huwei", "color": "red"}'
'{"id":2, "name":"xiaomi", "color": "black"}'
127.0.0.1:6379> set blog:user:1 '{"id":1, "name": "xiaoming", "phone": 123456789}'
OK127.0.0.1:6379> set blog:user:2 '{"id":2, "name":"xiaohong", "phone": 18212121111}'
OK127.0.0.1:6379> set blog:product:1 '{"id":1, "name":"huwei", "color": "red"}'
OK127.0.0.1:6379> set blog:product:2 '{"id":2, "name":"xiaomi", "color": "black"}'
OK

添加完之后,打开之前安装的Redis客户端工具,然后查看我们刚添加的数据,树状的文件夹列表。

image-20221011170247968.png

还有很多的命令这里不再一一讲述,具体可以看官网发布的命令去学习:redis.io/commands

1、哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。如用户信息等。

Redis hash 是一个键值对集合,类似于Java中的HashMap结构。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便

keyvalue
blog:user:1{"id":1, "name": "xiaoming", "phone": 123456789}
blog:user:2{"id":2, "name":"xiaohong", "phone": 18212121111}

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

image-20221011172131195.png