乐趣区

关于redis:redis入门知识第4篇redis中的string数据类型与基本的数据存取操作

redis 最常利用于各种构造类型和非构造类型高热度数据的拜访减速。在本文,咱们将从 redis 中 string 数据类型开始理解 redis 对数据的存取操作。本文是该系列的第四篇原创笔记,如果你还没浏览之前的局部,能够通过以下链接进行浏览

  • 01-redis 入门常识第 1 篇 -redis 简介
  • 02-redis 入门常识第 2 篇 -redis 的装置与测试
  • 03-redis 入门常识第 3 篇 -redis 的基本操作与数据类型

1. string 类型的特色

  • 存储的数据:单个数据,最简略的数据类型,也是最罕用的存储类型
  • 存储数据的格局:一个存储空间保留一个数据
  • 存储空间:通常应用字符串,如果存储的字符是数值的模式,能够应用数值操作(比方减少指定值、缩小指定值)的性能

2. string 类型的基本操作

  • 增加 / 批改数据
set key value
  • 获取数据
get key
  • 删除数据
del key
  • 增加 / 批改多个数据(M 即 multiple)
mset key1 value1 key2 value2 ...
  • 获取多个数据
mget key1 key2 ...
  • 获取数据字符个数
strlen key
  • 追加信息到原始数据开端(如原始存在则追加,否则新建)

如果 key 曾经存在并且是一个字符串,APPEND 命令将指定的 value 追加到该 key 原来值(value)的开端。

append key value

3. 单数据操作 与 多数据操作的比照

3.1. 指令

  • 设置单条数据:set key value
  • 设置多条数据:mset key1 value1 key2 value2

3.2. 操作时间差

假如每执行一个动作须要一个工夫单位,那么执行一次命令,须要的工夫单位为:发送执行命令(往)的工夫 + 执行的工夫 + 返回后果(返)的工夫,一共须要 3 个工夫单位。

  • 单数据操作,执行 3 条指令的执行过程:往返 6 个单位 + 执行 3 个
  • 多数据操作,执行 3 条指令的执行过程:往返 2 个单位 + 执行 3 个

4. string 数值类型数据的操作

设置数值数据减少指定的值

# 对 key 的值减少 1 个单位
incr key
# 指定对 key 的值减少 increment 个单位
incrby key increment
# 指定对 key 的值减少 increment 值,increment 能够是 float 类型的值
incrbyfloat key increment

设置数值数据缩小指定的值

# 对 key 的值缩小 1 个单位
decr key
# 指定对 key 的值减小 increment 个单位
decrby key increment
  • string 在 redis 中外部存储默认就是一个字符串,当遇到增减类操作 incr,decr 时会转成数值型进行计算。
  • redis 所有的操作都是原子性的,采纳单线程解决所有的业务,命令是一个一个执行的,因而无需思考并发带来的数据影响。

留神 :按数值进行操作的数据,如果原始数据不能转成数值,或超过 redis 数值的下限范畴,将会报错。
redis 中数值数据最大值为 9223372036854775807(java 中 long 型数据的最大值,Long.MAX_VALUE)

在大型企业级利用中,因为大量的数据,所以通常应用分表的形式存储数据。在应用多张表存储同类型数据中,对应的主键 id 必须保障统一性,不能反复。Oracle 数据库具备 sequence 设定,能够解决该问题,然而 MySQL 数据库并不具备此类机制。那么咱们就能够通过 string 数值类型的减少操作取得下一个值,再作为关系数据库中的主键值。

5. 设置 string 类型数据的有效期

以下有几个例子:

(1):“最强女生”启动海选投票,只能通过微信投票,每个微信号每 4 个小时只能投 1 票。

(2):电商商家开启热门商品举荐,热门商品不能始终处于热门期,每种商品热门期维持 3 天,3 天后主动勾销热门。

(3):新闻网站会呈现热点新闻,热点新闻最大的特色是实效性,如何自动控制热点新闻的时效性。

  • 解决方案:设置数据具备指定的生命周期
# 以秒为单位设置 key 的值
setex key seconds value
# 以毫秒为单位设置 key 的值
psetex key millisenconds value
  • 查看 key 有生命周期的数据
# 以秒为单位查问 key 残余的生命周期
ttl key
# 以毫秒为单位查问 key 残余的生命周期
pttl key

redis 控制数据的生命周期,通过数据是否生效管制业务行为,实用于有所具备时效性限定管制的操作。

6. redis 操作反馈

数据类型操作不胜利的反馈与数据失常操作的反馈的有查问,如下

  1. 示意运行后果是否胜利

(integer)0 -> false 失败
(integer)1 -> true 胜利

  1. 示意后果值

(integer)3 -> 3 个
(integer)1 -> 1 个

  1. 示意数据未获取到

(nil)等同于 null

数据最大存储量为 512m,而数值计算最大范畴(java 中的 long 的最大值)为 -9223372036854775807 到 9223372036854775807

7. redis 中 key 的命名倡议

redis 用于缓存热点数据,但数据最终存储在数据库中,redis 个别用于关系型数据库中的数据缓存。所以在给缓存 key 命名时最好要语意化,规范化。如下列 key -> value 键值对例子。

  • 用户的粉丝数:user:id:100:fans -> 123355
  • 用户的博客数:user:id:100:blogs -> 99
  • 用户的关注数:user:id:100:focus -> 83

下面的示例是存储用户的单个字段信息,在理论中,咱们能够须要存储用户的实现信息,那么中通常以 json 格局存储用户信息,如下 key -> value 示例

  • 用户的信息:user:id:100 -> {"id":100,"name":"春晚","fans":12355,"blogs":99,"focus:83}
退出移动版