Redis 中所有 key-value 都储存在 Redis-Object 中,Redis-Object 主要信息有:
- 数据类型(type)
- string (字符串)
- hash (Hash表)
- list (链表)
- set (无序不可重复集合)
- sorted set (有序集合)
- 编码方式(encoding)
- raw
- int
- ht
- zipmap
- linkedlist
- ziplist
- intset
-
数据指针(ptr)
-
虚拟内存(vm)
- …………..
一、Redis 基础命令
# 查看系统信息(Keyspace显示每个键空间中的数据数量) info # 测试链接是否OK(PONG为成功) ping # 退出客户端 quit # 持久化到本地 save # 查看当前键空间中数据量 dbsize # 切换键空间,默认为0 select 0 # 清除当前键空间数据(info中的Keyspace) flushdb # 清除所有键空间数据 flushall
二、Redis 键命令
# 添加字符串类型a-abc set a abc # 添加哈希类型a-abc hset hsah hahaha zhangsan # 删除a-abc,返回1成功,0失败 del a # 查看所有key,*为正则表达式,表示所有 keys * # 判断是否存在,返回1为存在,0为不存在 exists a # 设置a的生命周期为10秒 expire a 10 # 查看这条数据的生存时间,单位秒,返回-1为不过期,-2表示key不存在 ttl a # 查看键a对应value的数据类型 type a # 随机获取key的值 randomkey # 重命名key,把a命名为b,会覆盖已存在的key rename a b # 重命名key,如果b存在会重命名失败 renamenx a b
三、String 操作
# 添加字符串类型a-abc,成功返回OK set a abc # 添加字符串类型a-abc,存活时间100秒 setex a 100 abc # 添加字符串类型a-abc,存活时间10000毫秒(10秒) psetex a 10000 abc # 获取指定下表字符串---(abc),闭合空间,包前后边界 getrange a 0 2 # 设置新值,返回旧值---(abc) getset a zxc # 设置多个值 a-abc,z-zxc mset a abc z zxc # 获取多个值 mget a z # 添加字符串类型a-abc,键a存在会设置失败 setnx a abc # 添加字符串类型a-abc,其中一个key存在就会全部设置失败(有原子性) msetnx a abc z zxc # 获取字符串长度---(3) strlen a # key对应value为数值,value会加一 set s 21 incr s # key对应value为数值,value会加制定数量 set s 21 incrby s 100 # 同上为减操作 decr decrby # 在key对应value的末尾添加字符串,会返回添加后的字符串 append a xyz
四、Hash 操作
# 给key为map的键值设置键为name值为jim hset map name jim hset map age 18 # 判断key对应value是否有存在的key,有返回1,无返回0 hexisit map name # 获取key对应value中的key对应的值,不存在返回nil hget map name # 获取key对应value中的所有键值对 hgetall map # 获取key对应value中的所有key hkeys map # 获取key对应value中的所有value hvals map # 获取key对应value中的键值对数量 hlen map # 获取多个 hmget map name age # 设置多个 hmset map sex nan phone 1234568798 # 删除key对应value中的键值对 hdel map phone sex # 若map中存在name会添加失败 hsetnx map name newjim
五、List 操作
# 添加list
lpush list 1 2 3 4 5 6 7 8 9 10
# 获取长度
llen lsit
# 按范围取值,栈---("10" "9" " 8")
lrange list 0 2
# 设置指定下表元素 (10->100)
lset list 0 100
# 获取指定下标元素---("5")
lindex list 5
# 移除第一个元素,并返回(100)
lpop list
# 移除最后一个元素,并返回(1)
rpop list
六、Set 操作,Hash 实现,复杂度 O(1)
# 添加
sadd set a b c d
sadd set a(会失败,set不可重复集合)
# 获取元素数量---(4)
scard set
# 查看所有元素
smembers set
# 获取差集
sadd set1 c d e f
sdiff set set1---("b" "a")
sdiff set1 set---("f" "e")
# 获取交集---("c" "d")
sadd set1 c d e f
sinter set set1
# 获取并集---("d" "f" "b" "a" "c" "e")
sadd set1 c d e f
sunion set set1
# 随机获取指定个数的元素
srandmember set 2
# 判断是否为成员元素,返回1是,返回0不是
sismember set a
# 移除指定成员元素
srem set a b
# 移除一个随机元素并返回该元素
spop set
七、Sorted Set 操作,通过分数保证顺序,Hash 实现,复杂度 O(1)
# 添加
zadd sortedset 100 a 200 b 300 c
# 元素个数---(3)
zcard sortedset
# 查看元素分数---(100)
zscore sortedset a
# 查看分数区间的元素个数---(2)
zcount sortedset 0 220
# 返回指定元素索引
zrank sortedset a---(0)
zrank sortedset b---(1)
zrank sortedset c---(2)
# 增加元素分数
zincrby sortedset 1000 a
# 按照索引获取元素---("b" "c" "a")
zrange sortedset 0 10
# 按照索引获取元素和分数---("b" 200 "c" 300 "a" 1100)
zrange sortedset 0 10 withscores
