Redis的数据类型和常用操作

五大数据类型

字符串:String

  1. String是Redis最基本的类型,一个Key对应一个Value
  2. String类型是二进制安全的,意思是Redis的String可以包含任何数据,例如一张jpg格式的图片或者一个序列化的对象
  3. 一个Redis的字符串类型Value最多可以是512M

列表:List

  1. 字符串列表,依照插入顺序排序
  2. 数据结构为链表

集合:Set

  1. String类型的无序集合
  2. 通过HashTable实现

哈希:Hash(类似于Java中的Map)

  1. 一个键值对集合
  2. hash是一个String类型的field和value的映射表,hash特别适用于存储对象
  3. 类似于Java中的Map(String,Object)

有序集合:Zset(sorted set)

  1. Zset和Set一样是String类型元素的集合,且不允许重复
  2. 与Set不同的是每一个元素前都会有一个double类型的分数
  3. 虽然元素是惟一的,但是分数可以重复

Redis常见数据类型操作命令

Redis键:Key

命令 作用
keys * 获取当前数据库的所有key
exists key 判断指定的key是否存在,1代表存在,0代表不存在
expire key s 为指定的key设定生命周期为s秒,s秒之后该key自动销毁
ttl key 查看指定的key生命周期剩余时间,若为-1则永不过期,为-2则是已经过期
move key db 将key移动到指定的数据库,并将当前库中的记录删除
del key 删除指定的key

Redis字符串:String

命令 作用
append key newValue 在key对应的value后面追加值,追加的值为newValue
strlen key 获取key对应的value的长度
incr key 将key对应的value的值加1,value的类型需要为int
decr key 将key对应的value的值减1,value的类型需要为int
incrby key x 将key对应的value的值加x,value的类型需要为int
decrby key x 将key对应的value的值减x,value的类型需要为int
getrange key begin end 截取并返回key对应的value的值,截取范围为[begin,end]
setrange key index newValue 将key对应value的指定范围内的值重置为newValue,范围的开始为index
setex key s value 添加key:value,生命周期为s秒
setnx key value 如果key在当前数据库不存在则新增key:value
mset 批量增加key:value
mget 批量获取value
msetnx 批量设置,如果批量的key中有一个存在的,则全部都不能添加
代码示例
127.0.0.1:6379> set k1 1
OK
127.0.0.1:6379> incr k1
(integer) 2
127.0.0.1:6379> get k1
"2"
127.0.0.1:6379> incr k1
(integer) 3
127.0.0.1:6379> incrby k1 2
(integer) 5
127.0.0.1:6379> decrby k1 4
(integer) 1
127.0.0.1:6379> append k1 2345678
(integer) 8
127.0.0.1:6379> strlen k1
(integer) 8
127.0.0.1:6379> get k1
"12345678"
127.0.0.1:6379> getrange k1 0 3
"1234"
127.0.0.1:6379> setrange k1 0 xx
(integer) 8
127.0.0.1:6379> get k1
"xx345678"
127.0.0.1:6379> setex k2 10 v2
OK
127.0.0.1:6379> ttl k2
(integer) 6
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> setnx k3 v4
(integer) 0
127.0.0.1:6379> mset 1 1 2 2 3 3 4 4
OK
127.0.0.1:6379> mget 1 2 3 4
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> msetnx 5 5 6 6
(integer) 1
127.0.0.1:6379> msetnx 5 5 6 6
(integer) 0
127.0.0.1:6379>

Redis列表:List

命令 作用
lpush key [value] 从左边开始将value压入列表key,相当于栈
rpush key [value] 从右边开始将rtvalue压入列表key,相当于队列
lrange key start end 从左边第start位到end位获取列表key的值,若end为-1相当于到列表尾部
lpop key 弹出左边第一位的值
rpop key 弹出右边第一位的值
lindex key i 取出列表key左边第i为的值
llen key 获取列表key的长度
lrem key n value 删除列表key中n个value
ltrim key begin end 截取列表key从begin到end的值,再赋值给key
rpoplpush k1 k2 取出k1的尾部添加到k2的头部
lset key index value 将列表key的第index为赋值为value
linsert key before/end i value 在列表第i位之前/之后插入value

Redis集合:Set

命令 作用
sadd key [value] 增加一个set集合
smembers key 列出集合key的所有元素
sismember key value 判断value是否是集合key的一个元素
srandmember key n 随机获取集合key的n的元素
spop key n 随机弹出集合key的n个元素
srem key value 删除集合key中value元素
smove k1 k2 value 将集合k1中的元素移到k2
sunion k1 k2 求k1与k2的并集
sdiff k1 k2 求k1与k2的差集
sinter k1 k2 求k1与k2的交集

Redis哈希:Hash

命令 作用
hset key field value 在哈希key中添加键值对key:value
hget key field 得到哈希key中键为field的值
hmset key [field value] 在哈希key中批量设置键值对
hmget key [field] 批量得到哈希key中的值
hgetall key 得到哈希key中所有的键值对
hlen key 得到哈希key的长度
hexists key field 判断键field在哈希key中是否存在
hkeys key 得到哈希key中所有的键
hvals key 得到哈希key中所有的value
hincrby key field n 将哈希key中键为field的值加n
hincrbyfloat key field x 将哈希key中键为field的值加x,x可以是浮点数
hsetnx key field value 在哈希key中添加键值对key:value,若key存在则添加失败

Redis有序集合:Zset

命令 作用
zadd key [score value] 在有序集合Zset中添加 [分数 元素]
zrange key start end 遍历有序集合key中的元素
zrangebyscore key start end 根据分数遍历有序集合Zset中的分数和元素
zrem key score 根据分数删除有序集合Zset中的元素

猜你喜欢

转载自blog.csdn.net/zyp1376308302/article/details/84262046