Redis数据类型-String

Redis数据类型

Redis支持的数据类型:string,hash,list,set, zset(sorted set有序集合)

String 字符串

  • redis最基本的类型,你可以理解为与Memcached一模一样的模型,一个key 对应一个 value
  • 二进制安全,表示redis的string 可以包含任何数据,比如jpg图片或者序列化的对象
  • 一个键最大能存储512MB
命令描述
set存key - value
get根据key获取value
nx若key 已存在,则返回nil,不替换
xx若key 已存在,则替换value,默认也是替换
mset批量存
mget批量取
  • set 与 get
127.0.0.1:6379> set name 'just'
OK
127.0.0.1:6379> get name
"just"
  • nx 与 xx
127.0.0.1:6379> set name just2 nx
(nil)
127.0.0.1:6379> set name just2 xx
OK
127.0.0.1:6379> get name
"just2"
  • mset 与 mget
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b
1) "1"
2) "2"

redis处理字符串数据,若value是基本类型-Integer,则可以进行‘加、减’运算

命令描述
incrvalue + 1
incrbyvalue + n
desrvalue - 1
desrbyvalue - n
127.0.0.1:6379> incr counter
(integer) 101
127.0.0.1:6379> incr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
127.0.0.1:6379> decr counter
(integer) 101
127.0.0.1:6379> decrby counter 55
(integer) 46
127.0.0.1:6379> incrby counter 22
(integer) 68

而且,incr 这类操作是原子性的,当多个客户同时操作相同key counter时永远不会产生竞争条件(只有竞争条件的存在,才会发生资源竞争问题),因为redis不会让多台客户端对一个key同时执行修改操作

在之前的操作中,可以看到返回的数据往往都是最新的值,那么如果返回修改前value的值呢?

命令描述
getset替换 value值,返回旧值
127.0.0.1:6379> getset counter 55
"68"

如果你想自增counter,来记录系统的访问量,然后希望每一小时收集一次,则可以使用getset;

其他比较有用的命名:

命令描述
exists判断key是否存在,存在返回1,不存在返回0
del删除key, 删除成功返回1,不成功0
type判断key的数据类型,不存在返回none

自行验证了~

Redis expires

Redis期望keys的存在是有时间的,即过一段时间后进行删除,我们可以为key设置‘存在时间’

  • 时间可以是秒也可以是毫秒
  • 然而,期望时间是 1 millisecond 为单位
  • 这个时间是存储在磁盘上的,不管服务是否启动,都会删除

有设置生存时间的,当然也有设置永久存在的命令 persist

命令描述
expire为某一key设置存在时间,当key已存在情况下
ex在set key ex 添加key 中使用
persist将某一key设置为永久存在
ttl查看key剩余存在时间,秒;若key已经不存在返回-2;若永久存在返回-1
pttl查看key剩余存在时间,毫秒;若key已经不存在返回-2;若永久存在返回-1
127.0.0.1:6379> set name aaa
OK
127.0.0.1:6379> expire name 10  ## 存在10s

127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name    ##已删除
(integer) -2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name aaa ex 100
OK
127.0.0.1:6379> persist name  ## 永久存在
(integer) 1
127.0.0.1:6379> pttl name  ##返回-1
(integer) -1
127.0.0.1:6379> save  ## 保存到磁盘
OK  
127.0.0.1:6379> expire name 30  ##设置存在30s
(integer) 1
127.0.0.1:6379> get name     ##关闭服务,30后再连接
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> get name     ## 可以看到关闭服务也会删除
(nil)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值