redis数据类型String详解

Redis数据类型之keys

String

String是Redis最基本的类型,一个key对应一个value。String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。

  • 设置key-value
set key value
  • 获取指定key的value
get key
  • 将给定的value追加到原值的末尾
append key value
  • 获得值的长度
strlen key
  • 只有在 key不存在时,设置 key 的值
setnx key value
  • 将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1,具有原子性
incr key
  • 将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1,具有原子性
decr key
  • 将 key 中储存的数字值增减。自定义步长。
incrby/decrby key 步长
  • 同时设置一个或多个 key-value对
mset key1 value1 key2 value2......
  • 同时获取一个或多个 value
mget key1 key2......
  • 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
msetnx key1 value1 key2 value2.....
  • 获得值的范围,类似java中的substring,前包,后包(索引从0开始)
getrange key <起始位置> <结束位置>
  • 用value覆写key所储存的字符串值,从起始位置开始(索引从0开始)。
setrange key <起始位置> value
  • 设置键值的同时,设置过期时间,单位秒。
setex key 过期时间 value
  • 以新换旧,设置了新值同时获得旧值。
getset key newValue 

演示

127.0.0.1:6379> set key 1
OK
127.0.0.1:6379> get key
"1"
#在key的值后追加2
127.0.0.1:6379> append key 2
#返回追加后value的长度
(integer) 2
127.0.0.1:6379> keys *
1) "key"
#给不存在的k2追加,会创建k1
127.0.0.1:6379> append k2 1
(integer) 1
127.0.0.1:6379> keys *
1) "key"
2) "k2"
127.0.0.1:6379> del k2
(integer) 1
127.0.0.1:6379> get key
"12"
#获取key的值的长度
127.0.0.1:6379> strlen key
(integer) 2
127.0.0.1:6379> append key 3
(integer) 3
127.0.0.1:6379> strlen key
(integer) 3
127.0.0.1:6379> get key
"123"
#如果key不存在就设置
127.0.0.1:6379> setnx key 1
#返回0表示设置失败,key已存在
(integer) 0
127.0.0.1:6379> setnx key2 1
3key不存在,设置成功,返回1
(integer) 1
# 给key自增1
127.0.0.1:6379> incr key
#自增成功返回自增后的值
(integer) 124
127.0.0.1:6379> incr key
(integer) 125
#给key自减1
127.0.0.1:6379> decr key
#自减成功返回自减后的值
(integer) 124
127.0.0.1:6379> decr key
(integer) 123
127.0.0.1:6379> set key2 a
OK
#给值不是数值型的k2自增
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
#给值不是数值型的k2自减
127.0.0.1:6379> decr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> get key
"123"
#自定义步长自增
127.0.0.1:6379> incrby key 10
(integer) 133
127.0.0.1:6379> get key
"133"
127.0.0.1:6379> decrby key 33
(integer) 100
127.0.0.1:6379> get key
"100"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
#设置多个值
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
#获取多个值
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set k2 v2
OK
#当所有键不存在就设置
127.0.0.1:6379> msetnx k1 v1 k2 v2 k3 v3
#返回0设置失败,因为k2已存在
(integer) 0
127.0.0.1:6379> keys *
1) "k2"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> msetnx k1 v1 k2 v2 k3 v3
#清空库后设置成功,返回1
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set key 123456
OK
#获取key【1-3】的值
127.0.0.1:6379> getrange key 1 3
"234"
#起始索引小于0返回空串
127.0.0.1:6379> getrange key -1 3
""
#结束索引大于值的最大索引视为最大索引
127.0.0.1:6379> getrange key 0 100
"123456"
127.0.0.1:6379> get key
"123456"
#从索引为1处覆写key的值
127.0.0.1:6379> setrange key 1 abc
#返回覆写后值的长度
(integer) 6
127.0.0.1:6379> get key
"1abc56"
127.0.0.1:6379> setrange key 1 abcdef
(integer) 7
127.0.0.1:6379> get key
"1abcdef"
127.0.0.1:6379> setrange key 0 ""
(integer) 7
127.0.0.1:6379> get key
"1abcdef"
127.0.0.1:6379> setrange key 0 ''
(integer) 7
127.0.0.1:6379> get key
"1abcdef"
127.0.0.1:6379> setrange key 1 23456789
(integer) 9
127.0.0.1:6379> get key
"123456789"
127.0.0.1:6379> keys *
1) "key"
#设置值的同时设置过期时间为60秒
127.0.0.1:6379> setex k2 60 v2
OK
#查看还有多久过期
127.0.0.1:6379> ttl k2
(integer) 57
#移除key的过期时间
127.0.0.1:6379> persist k2
(integer) 1
127.0.0.1:6379> ttl k2
#返回-1表示永不过期
(integer) -1
#设置新值同时返回旧值
127.0.0.1:6379> getset k2 newV2
"v2"
127.0.0.1:6379> get k2
"newV2"

String的数据结构

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。

redis数据类型之list详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值