redis string数据类型

介绍

与 Java 的 String 、C++ string 同名,但不是一个意思

  • 最为基础的数据存储类型,一个key对应一个value
  • 是二进制安全的,意味着该类型可以接受 任何格式 的数据,如 JPEG 或 序列化对象 等。
  • 最多可以容纳的数据长度是 512M。

应用场景

  • 集群时实现session共享
    spring session

  • 计数器
    用string类型进行计数,如:评论数、点赞数、分享数,收藏数,访问量,商品库存(防止超卖)
    string类型的内容是 数字值 时,可通过 incr 和 decr 命令将数字值 加一 或 减一,这两个操作具有 原子性,总能安全地进行加减操作。

命令

详解:
http://redisdoc.com/string/index.html
https://www.runoob.com/redis/redis-strings.html

SET
SETNX
SETEX
PSETEX
GET
GETSET
STRLEN
APPEND
SETRANGE
GETRANGE
INCR:加一,原子操作,总能安全地进行操作
INCRBY
INCRBYFLOAT
DECR:减一,原子操作,总能安全地进行操作
DECRBY
MSET
MSETNX
MGET

例子

微博点赞数量

key:weibo_123_like,weibo 表示 表名,123 表示 主键的值,like 表示 点赞数量 字段

set 命令

将字符串值 value 关联到 key

>set weibo_123_like 0
OK

注意: 再次设置相同的key,其value会被覆盖,不会报错:

get

>get weibo_123_like

显示:

0

incr key

当key的value是数字时,加1

INCR 命令是一个针对字符串的操作。 因为 Redis 并没有专用的整数类型, 所以键 key 储存的值在执行 INCR 命令时会被解释为十进制 64 位有符号整数。

如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

例子
>incr weibo_123_like
(integer) 1

decr key

当key的value是数字时,减1

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。

如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

接上面例子
> DECR weibo_123_like
(integer) 0

incrby key decrement

当key的value是数字时,加上 increment

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

> SET rank 50
OK

> INCRBY rank 20
(integer) 70

> GET rank
"70"

decrby key decrement

当key的value是数字时,减 decrement

如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。

如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

> SET count 100
OK

> DECRBY count 20
(integer) 80

原文出处:/show_1IXGjYbQ0Yz.html