Skip to content

setnx 分布式锁的解决

介绍 ​

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

数据类型介绍描述
string字符串普通字符串,redis中最简单的数据类型
list列表按照插入顺序排列,可以有重复元素,类似于java中的LinkedList
set集合无序集合,没有重复元素,类似于java中的HashSet
zset / sorted-set有序集合集合中每个元素关联一个分数(score),根据分数排序,没有重复元素
hash哈希也叫散列,类似于java中的HashMap结构

Redis的使用 ​

String ​

Redis 中字符串类型常用命令:

命令作用描述
set key value设置指定 key 的值
get key获取指定 key 的值
mset key value [key value ...]同时设置一个或多个 key-value 对
mget key1 key2 ...获取所有(一个或多个)给定 key 的值
setnx key value只有在 key 不存在时设置 key 的值,
incr key将 key 中储存的数字值增一
incrby key increment将 key 所储存的值加上给定的增量值(increment)
decr key将 key 中储存的数字值减一
decrby key decrementkey 所储存的值减去给定的减量值(decrement)
setex key seconds value将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)

Hash ​

Hash是一个string类型的field和value的映射表,特别适合存储对象。常见的操作命令:

hset key field value将哈希表 key 中的字段 field 的值设为 value
hget key field获取存储在哈希表中指定字段的值
hmset key field1 value1 [field2 value2 ]同时将多个 field-value (域-值)对设置到哈希表 key 中
hmget key field1 [field2]获取所有给定字段的值
hdel key field2 [field2]删除一个或多个哈希表字段
hkeys key获取所有哈希表中的字段
hvals key获取哈希表中所有值
hgetall key获取在哈希表中指定 key 的所有字段和值

List ​

List(列表)是简单的字符串列表,按照插入顺序排序,可以出现重复的元素。常用命令有:

LPUSH KEY_NAME VALUE1.. VALUEN将一个或多个值插入到列表头部
LRANGE KEY_NAME START END返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。
RPOP KEY_NAMERedis Rpop 命令用于移除并返回列表的最后一个元素

Set ​

Set(集合)是无序集合,集合中不能出现重复元素。常用命令有:

sadd key member1 [member2]向集合添加一个或多个成员
scard key获取集合的成员数
smembers key返回集合中的所有成员
spop key移除并返回集合中的一个随机元素
sinter key1 [key2]返回给定所有集合的交集
sunion key1 [key2]返回所有给定集合的并集
sdiff key1 [key2]返回给定所有集合的差集
srem key member1 [member2]移除集合中一个或多个成员

Zset ​

Sorted Set(有序集合)和集合一样不允许重复的成员,不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来对集合中的成员进行排序。常用命令有:

zadd key score1 member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange key start stop [withscores]通过索引区间返回有序集合成指定区间内的成员,分数从底到高
zrangebyscore key min max [withscores] [limit]通过分数返回有序集合指定区间内的成员
zrevrange key start stop [withscores]返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrangebyscore key max min [withscores]返回有序集中指定分数区间内的成员,分数从高到低排序
zincrby key increment member有序集合中对指定成员的分数加上增量 increment
zrem key member [member ...]移除有序集合中的一个或多个成员
zcard key获取有序集合的成员数

Redis通用命令 ​

所谓通用命令,指的是不区分数据类型都可以使用的命令:

命令作用描述
keys pattern查找所有符合给定模式( pattern)的 key
exists key检查给定 key 是否存在
type key返回 key 所储存的值的类型
del key该命令用于在 key 存在时删除 key