redis之setnx、setex、setrange、mset
2016-08-02 22:59
239 查看
1.setnx
设置 key
对应的值为 string
类型的 value。 如果
key
已经存在,返回 0,
nx 是
not exist
的意思。
例如我们添加一个
name= HongWan_new
的键值对,可以这样做:
redis
127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379> setnx name HongWan_new
(integer) 0
redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379>
由于原来 name
有一个对应的值,所以本次的修改不生效,且返回码是 0。
2.setex
设置
key 对应的值为
string 类型的 value,并指定此键值对应的有效期。
例如我们添加一个
haircolor= red 的键值对,并指定它的有效期是
10 秒,可以这样做:
redis 127.0.0.1:6379>
setex haircolor 10 red
OK
redis 127.0.0.1:6379> get haircolor
"red"
redis 127.0.0.1:6379> get haircolor
(nil)
redis 127.0.0.1:6379>
可见由于最后一次的调用是
10 秒以后了,所以取不到
haicolor 这个键对应的值。
3.setrange
设置指定 key
的 value 值的子字符串。
例如我们希望将 HongWan 的
126 邮箱替换为 gmail
邮箱,那么我们可以这样做:
redis 127.0.0.1:6379> get name
"HongWan@126.com"
redis 127.0.0.1:6379> setrange name 8 gmail.com
(integer) 17
redis 127.0.0.1:6379> get name
"HongWan@gmail.com"
redis 127.0.0.1:6379>
其中的
8 是指从下标为 8(包含
8)的字符开始替换
4.mset
一次设置多个
key 的值,成功返回
ok 表示所有的值都设置了,失败返回
0 表示没有任何值被设置。
redis 127.0.0.1:6379>
mset key1 HongWan1 key2 HongWan2
OK
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379>
5.msetnx
一次设置多个
key 的值,成功返回
ok 表示所有的值都设置了,失败返回
0 表示没有任何值被设置, 但是不会覆盖已经存在的
key。
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> msetnx key2 HongWan2_new
key3 HongWan3
(integer) 0
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> get key3
(nil)
可以看出如果这条命令返回
0,那么里面操作都会回滚,都不会被执行。
最后,休息一下,推荐视频gravetee.com
设置 key
对应的值为 string
类型的 value。 如果
key
已经存在,返回 0,
nx 是
not exist
的意思。
例如我们添加一个
name= HongWan_new
的键值对,可以这样做:
redis
127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379> setnx name HongWan_new
(integer) 0
redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379>
由于原来 name
有一个对应的值,所以本次的修改不生效,且返回码是 0。
2.setex
设置
key 对应的值为
string 类型的 value,并指定此键值对应的有效期。
例如我们添加一个
haircolor= red 的键值对,并指定它的有效期是
10 秒,可以这样做:
redis 127.0.0.1:6379>
setex haircolor 10 red
OK
redis 127.0.0.1:6379> get haircolor
"red"
redis 127.0.0.1:6379> get haircolor
(nil)
redis 127.0.0.1:6379>
可见由于最后一次的调用是
10 秒以后了,所以取不到
haicolor 这个键对应的值。
3.setrange
设置指定 key
的 value 值的子字符串。
例如我们希望将 HongWan 的
126 邮箱替换为 gmail
邮箱,那么我们可以这样做:
redis 127.0.0.1:6379> get name
"HongWan@126.com"
redis 127.0.0.1:6379> setrange name 8 gmail.com
(integer) 17
redis 127.0.0.1:6379> get name
"HongWan@gmail.com"
redis 127.0.0.1:6379>
其中的
8 是指从下标为 8(包含
8)的字符开始替换
4.mset
一次设置多个
key 的值,成功返回
ok 表示所有的值都设置了,失败返回
0 表示没有任何值被设置。
redis 127.0.0.1:6379>
mset key1 HongWan1 key2 HongWan2
OK
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379>
5.msetnx
一次设置多个
key 的值,成功返回
ok 表示所有的值都设置了,失败返回
0 表示没有任何值被设置, 但是不会覆盖已经存在的
key。
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> msetnx key2 HongWan2_new
key3 HongWan3
(integer) 0
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> get key3
(nil)
可以看出如果这条命令返回
0,那么里面操作都会回滚,都不会被执行。
最后,休息一下,推荐视频gravetee.com
相关文章推荐
- Redis set setnx increase 的理解
- Redis锁, SETNX, lua脚本和eval函数, CyclicBarrier栅栏
- 基于Redis的incr、发布订阅防并发和setnx、轮询防并发的理解
- 基于redis的setnx()、get()、getset()方法 分布式锁
- php-redis中文参考手册_Ping_echo_set_get_setex_psetex_...
- C++ Redis mset 二进制数据接口封装方案
- Redis MSET的极限在哪里
- redis中SETEX和SET有什么区别?
- 谈谈Redis的SETNX
- 谈谈redis中的setnx
- redis 的setnx命令
- 谈谈Redis的SETNX
- 谈谈Redis的SETNX
- 使用redis的setnx制作排他锁
- 分布式锁实现方案1、基于Redis的SETNX操作实现的分布式锁
- redis 的setnx,数据库读取缓存
- redis 中pipline,mset, mget使用对比
- Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况(一)
- C++ Redis mset 二进制数据接口封装方案
- Redis_redis分布式锁-SETNX