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