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

136 阅读2分钟

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

1、 字符串(String)

String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value

Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512M

1.1、SET key value

设置指定 key 的值。

127.0.0.1:6379> set name xiaoming
OK

1.2、GET key

获取指定 key 的值。

127.0.0.1:6379> get name
"xiaoming"

1.3、MSET key value [key value ...]

批量添加多个String类型的键值对

127.0.0.1:6379> mset k1 v1 k2 v2
OK127.0.0.1:6379> keys *
1) "k2"
2) "k1"
3) "name"

1.4、MGET key1 [key2..]

根据多个key获取多个String类型的value,这个可以用在项目的浏览量和点赞的应用上

127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"

1.5、INCR key

将 key 中储存的数字值增一。

127.0.0.1:6379> set age 20
OK127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> incr age
(integer) 22

1.6、INCRBY key increment

让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2

127.0.0.1:6379> incr age
(integer) 22127.0.0.1:6379> incrby age 20
(integer) 42

1.7、INCRBYFLOAT key increment

将 key 所储存的值加上给定的浮点增量值(increment)

127.0.0.1:6379> incrbyfloat age 9
"51"
127.0.0.1:6379> incrbyfloat age 0.1
"51.10000000000000001"

1.8、DECR key

将 key 中储存的数字值减一。

127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> decr num
(integer) 0

1.9、DECRBY key decrement

key 所储存的值减去给定的减量值(decrement) 。

127.0.0.1:6379> incrby num 20
(integer) 21127.0.0.1:6379> decrby num 10
(integer) 11

1.10、SETNX key value

添加一个String类型的键值对,前提是这个key不存在,否则不执行

127.0.0.1:6379> setnx num 10
(integer) 0127.0.0.1:6379> get num
"11"

1.11、SETEX key seconds value

添加一个String类型的键值对,并且指定有效期(以秒为单位)。

127.0.0.1:6379> setex time 200 fly
OK
127.0.0.1:6379> get time
"fly"

1.12、APPEND key value

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

127.0.0.1:6379> get num
"11"127.0.0.1:6379> append num 200
(integer) 5
127.0.0.1:6379> get num
"11200"

1.13、GETRANGE key start end

getrange 获取指定区间范围内的值,类似between...and的关系,从零到负一表示全部

127.0.0.1:6379> set name a3121assaxd
OK
//全部获取
127.0.0.1:6379> getrange name 0 -1
"a3121assaxd"//截取部分字符串
127.0.0.1:6379> getrange name 0 2
"a31"

1.14、SETRANGE key offset value

setrange 设置指定区间范围内的值,格式是setrange key值 具体值

127.0.0.1:6379> setrange name 1 xxx
(integer) 11127.0.0.1:6379> get name
"axxx1assaxd"