redis getset 命令怎么使用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis getset 命令怎么使用方法相关的知识,希望对你有一定的参考价值。

参考技术A [Redis] redis-cli 命令总结

Redis提供丰富命令(command)数据库各种数据类型进行操作些commandLinux终端使用
编程比使用Redis Java语言包些命令都应面Redis提供命令做总结

官网命令列表: (英文)

1、连接操作相关命令

quit:关闭连接(connection)
auth:简单密码认证
2、value操作命令

exists(key):确认key否存
del(key):删除key
type(key):返值类型
keys(pattern):返满足给定pattern所key
randomkey:随机返key空间key
rename(oldname, newname):key由oldname重命名newname若newname存则删除newname表示key
dbsize:返前数据库key数目
expire:设定key间(s)
ttl:获key间
select(index):按索引查询
move(key, dbindex):前数据库key转移dbindex索引数据库
flushdb:删除前选择数据库所key
flushall:删除所数据库所key
3、String操作命令

set(key, value):给数据库名称keystring赋予值value
get(key):返数据库名称keystringvalue
getset(key, value):给名称keystring赋予value
mget(key1, key2,…, key N):返库string(名称key1key2…)value
setnx(key, value):存名称keystring则向库添加string名称key值value
setex(key, time, value):向库添加string(名称key值value)同设定期间time
mset(key1, value1, key2, value2,…key N, value N):同给string赋值名称key istring赋值value i
msetnx(key1, value1, key2, value2,…key N, value N):所名称key istring都存则向库添加string
名称key i赋值value i
incr(key):名称keystring增1操作
incrby(key, integer):名称keystring增加integer
decr(key):名称keystring减1操作
decrby(key, integer):名称keystring减少integer
append(key, value):名称keystring值附加value
substr(key, start, end):返名称keystringvalue串
4、List操作命令

rpush(key, value):名称keylist尾添加值value元素
lpush(key, value):名称keylist添加值value 元素
llen(key):返名称keylist度
lrange(key, start, end):返名称keyliststart至end间元素(标0始同)
ltrim(key, start, end):截取名称keylist保留start至end间元素
lindex(key, index):返名称keylistindex位置元素
lset(key, index, value):给名称keylistindex位置元素赋值value
lrem(key, count, value):删除count名称keylist值value元素
count0删除所值value元素count>0至尾删除count值value元素count<0尾删除|count|值value元素
lpop(key):返并删除名称keylist首元素 rpop(key):返并删除名称keylist尾元素
blpop(key1, key2,… key N, timeout):lpop命令block版本
即timeout0若遇名称key ilist存或该list空则命令结束
timeout>0则遇述情况等待timeout秒问题没解决则keyi+1始list执行pop操作
brpop(key1, key2,… key N, timeout):rpopblock版本参考命令
rpoplpush(srckey, dstkey):返并删除名称srckeylist尾元素并该元素添加名称dstkeylist部
5、Set操作命令

sadd(key, member):向名称keyset添加元素member
srem(key, member) :删除名称keyset元素member
spop(key) :随机返并删除名称keyset元素
smove(srckey, dstkey, member) :member元素名称srckey集合移名称dstkey集合
scard(key) :返名称keyset基数
sismember(key, member) :测试member否名称keyset元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, key1, key2,…key N) :求交集并交集保存dstkey集合
sunion(key1, key2,…key N) :求并集
sunionstore(dstkey, key1, key2,…key N) :求并集并并集保存dstkey集合
sdiff(key1, key2,…key N) :求差集
sdiffstore(dstkey, key1, key2,…key N) :求差集并差集保存dstkey集合
smembers(key) :返名称keyset所元素
srandmember(key) :随机返名称keyset元素
6、zset(sorted set)操作命令

zadd(key, score, member):向名称keyzset添加元素memberscore用于排序该元素已经存则根据score更新该元素顺序
zrem(key, member) :删除名称keyzset元素member
zincrby(key, increment, member) :名称keyzset已经存元素member则该元素score增加increment;
否则向集合添加该元素其score值increment
zrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)
若没member元素返nil
zrevrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)
若没member元素返nil
zrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素
zrevrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素
zrangebyscore(key, min, max):返名称keyzsetscore >= min且score <= max所元素
zcard(key):返名称keyzset基数 zscore(key, element):返名称keyzset元素element
score zremrangebyrank(key, min, max):删除名称keyzsetrank >= min且rank <= max所元素
zremrangebyscore(key, min, max) :删除名称keyzsetscore >= min且score <= max所元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):Nzset求并集交集
并集合保存dstkeyN于集合每元素score进行AGGREGATE运算前都要乘于WEIGHT参数
没提供WEIGHT默认1默认AGGREGATESUM即结集合元素score所集合应元素进行SUM运算值MINMAX指
结集合元素score所集合应元素值值
7、Hash操作命令

hset(key, field, value):向名称keyhash添加元素fieldvalue
hget(key, field):返名称keyhashfield应value
hmget(key, field1, …,field N):返名称keyhashfield i应value
hmset(key, field1, value1,…,field N, value N):向名称keyhash添加元素field ivalue i
hincrby(key, field, integer):名称keyhashfieldvalue增加integer
hexists(key, field):名称keyhash否存键field域
hdel(key, field):删除名称keyhash键field域
hlen(key):返名称keyhash元素数
hkeys(key):返名称keyhash所键
hvals(key):返名称keyhash所键应value
hgetall(key):返名称keyhash所键(field)及其应value
8、持久化

save:数据同步保存磁盘
bgsave:数据异步保存磁盘
lastsave:返功数据保存磁盘Unix戳
shundown:数据同步保存磁盘关闭服务
9、远程服务控制

info:提供服务器信息统计
monitor:实转储收请求
slaveof:改变复制策略设置
config:运行配置Redis服务器

基于Redis的分布式锁的简单实现

Redis官方给出两种思路

第一种:SET key value [EX seconds] [PX milliseconds] NX

第二种:SETNX+GETSET

 

首先,分别看一下这几个命令

SET命令

SETNX命令

GETSET命令

 

接着,看第一种方式

官方给出的思路是这样的

还有一处,也是类似的

这种方式的实现可能是这样的:

 

第二种方式

官方给出的思路是这样的

代码可能看起来像是这样

 

总结:

这两种方式的基本思路都是:客户端在服务器上设置一个key值,如果能够设置成功,则视为加锁成功;删除key,则表示解锁。

不同之处在于,SET方式只需判断能不能设置成功,删除的时候判断是不是自己设置的,万一超时了利用系统自带的生存时间可以自动释放锁。

而SETNX+GETSET方式除了需要判断能不能设置成功,在设置失败的时候还要进一步判断其值是否有效,是否超时由客户端自己判断

 

参考  https://redis.io/topics/distlock

 

以上是关于redis getset 命令怎么使用方法的主要内容,如果未能解决你的问题,请参考以下文章

redis中hset(key,field,value)存储的数据怎么设置过期时间,针对field设置

Redis通过getset和incr实现复位操作计数器

Redis中设置过期实践key

Redis中设置过期实践key

redis 从服务器 过期 怎么处理

Redis中哈希的原子GETSET