Redis数据类型
Key + (String set zset list hash)
基本指令
keys * 查看所有键
exists <key> 判断某个键是否存在
type <key> 查看键的类型
del <key> 删除某个键
expire <key> <seconds>为键值设置过期时间,单位秒
ttl <key> 表示还有多少秒过期-1表示永不过期 -2代表已过期
dbsize 查看当前数据库Key的数量
Flushdb 清空当前库
Flushall 通杀全部库
String:
String是Redis最基本的类型,是二进制,因此可以包含任何数据,一个Redis中字符串value最多可以是512M
操作:
get <key> 获取相应键的值
set <key> <value> 添加键值对
append <key> <value> 在原始Value末尾追加
strlen <key> 获取值的长度
setnx <key> <value> 只有在Key不存在时设置Key的值
incr <key> 将Key中存储的数字值增1(只能操作数字)
decr <key> 将Key中存储的数字值减1
incrby / decrby <key> <步长> 将key中存储的数字值按补偿+或者-
mget <key> <key> 获取多个键的值
mset <key1> <value1> <key2> <value2>同时设置一个或多个值
msetnx <key1> <value1> <key2> <value2> 同时设置一个或多个K-V 并且Key都不存在
getrange <key> <value> <start> <end>
setrange <key> position value
setex <key> <过期时间> <value> 设置K-V的同时设置过期时间
getset <key> <value> 以新换旧,设置了新值同时获得旧值
原子性
原子性是不会被线程调度机制打断的操纵.
(1)在单线程中,能够在单条指令中完成的操作都被认为是原子操作.因为中断只能发生在指令之间
(2)在多线程中不会被其他线程打断的操作就叫原子操作
List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
操作:
lpush/rpush <key> <value1> <value2> 从左边/右边插入一个或者多个值
pop/rpop <key> 从左/右边吐出一个值,值在键在,值光键亡
rpoplpush <key1> <key2> 从<key1>右边吐出一个值,插到<key2>左边
lrange <key> <start> <stop> 按照索引下标获取元素(从左到右)范围
lindex <key> <index>按照索引下标获取元素(从左到右)
llen <key> 获取列表长度
linsert <key> before <value> <newvalue> 在<value>的后面插入<newvalue>
lrem <key><n> <value> 从左边删除N个相同value(从左到右)
Set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
操作:
sadd <key> <value> <value> 将多个member元素加入到集合Key.
smembers <key> 取出该集合的所有值
sismember <key> <value> 判断集合<key>中是否含有value值
scard <key> 返回该集合的元素个数
srem <key> <value> <value> 删除某个集合中的元素
spop <key> 随机从集合中吐出一个值,会删除元素
srandmember <key> <n> 从集合中取出N个值.不会从集合中删除
sinter <key1> <key2> 返回两个集合的交集元素
sunion <key1> <key2> 返回两个集合的并集
sdiff <key1> <key2> 返回两个集合的差集
hash
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
操作:
hset <key> <filed> <value> 创建hash 给key集合中的filed键赋值
hget <key> <filed> 从key集合中取出value
hmset <key1> <filed1> <value1> <filed2> <value2> 批量设置hash的值
hexists key <field> 查看哈希表key中,给定域field是否存在
hkeys <key> 列出该hash集合的所有field
hvals <key> 列出该hash集合的所有value
hgetall <key> 列出hash集合的所有field和value
hincrby <key> <field> <increment> 为哈希表中field的值加上增量increment
hsetnx <key> <field> <value> 将哈希表中field的值设置为value 而且仅当field不存在
zset
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
操作:
zadd <key> <score> <value> <score2> <value2>: 将一个或多个元素及其score值添加到zset 或者更新已存在成员的分数
zrange <key> <start> <stop> 返回有序集key中,索引在start和stop范围的成员
zrangebyscore key min max 返回有序集key中,分数在minx和max范围的成员
zrevrangebyscore key max min 返回有序集key中,分数在max和min范围的成员
zincrby <key> <increment> <value> 为元素的score加上增强
zrem <key> <value> 删除该集合下指定值的元素
zcount <key> <min> <max> 统计该集合 分数区间内的元素个数
zrank <key> <value> 返回该值在集合中的排名,从0开始