0.基本命令

默认redis有16个数据库,索引是0-15
select 0 切换数据库,索引是0-15
dbsize 查看当前库的key数量
flushdb 清空当前数据库
flushall 通杀所有库

1.key操作

keys 当前库所有key
keys
1 查看第几个数据库所有的key(这里不是从0开始!)
set k1 v1 存储
exists k1 查看key是否存在
type k1 查看数据类型
del k1 删除
unlink k1 根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作
expire k1 10 设置key的过期时间,单位是秒
ttl k1 查看key过期时间 -2代表过期 -1代表永久不过期

2.String操作

String类型是二进制安全的!包括图片和序列化对象!
最基本类型!String最大值是512M

set k1 v1 设置值
get k1 获取值
set k1 v2 覆盖值
append k1 abc 追加值,返回计算后长度
strlen k1 获取字符串长度
setnx k1 v3 只能新增,不能更新替代(成功返回1,失败返回0)
set k2 100 设置值
incr k2 对k2的value自增1,返回自增后的值 i++
decr k2 对k2的value自减1,返回自减后的值 i—
incrby k2 10 对k2,自增10
decrby k2 10 对k2,自减10
自增和自减是原子性操作
图片.png
java的i++不是原子性的,多线程不安全

mset k1 v1 k2 v2 k3 v3 同时给3个key-value赋值
mget k1 k2 k3 同时获取3个value
msetnx k1 v1 k4 v4 同时多个赋值 有一个失败,全部失败,原子性
set name lcd123
getrange name 0 3 获取value的时候,获取到指定的长度 参数代表:索引 数字
setrange name 2 kkk 改变字符串,从第几个位置开始
setex age 20 value30 设置,过期时间20秒,值为value30,get获取值.ttl查看过期时间
set name zhangsan
getset name laowang 以新值laowang代替旧值zhangsan,返回zhangsan
get name 这次取就是laowang了,zhangsan没了

数据结构

这里说的是value
图片.png
图片.png

3.List操作

简介

图片.png

数据结构

图片.png
快速链表=多个压缩列表

api

lpush k1 v1 v2 v3 链表头v3 v2 v1尾,左边插入
lrange k1 0 -1 从左边开始取,结果:v3 v2 v1 可以多次取值
清空flushdb
rpush k1 v1 v2 v3 链表头v1 v2 v3尾,右边插入
lrange k1 0 -1 从左边开始取,结果v1 v2 v3 可以多次取值
lpop/rpop key 从左边/右边取值,值在键在 值不在,键完,返回nil,keys *就没了
rpoplpush k1 k2 把k1右边的取出来,放到k2的左边
lindex k1 0 取出k1对应的list里面,索引为0的值
llen k1 k1的list的长度
linsert k1 before v1 e1 在k1的list,v1的前面加上e1元素
加之前是 v3 v2 v1 加之后是v3 v2 e1 v1
linsert k1 after v2 e2 在k1的list,v2的后面加上e2
加之后是 v3 v2 e2 e1 v1

lrem k1 2 haha 返回值:成功删除的元素,从左往右删除2个值为haha的
图片.png
lset k1 1 qq 把list里面索引为1的元素替换成qq,返回OK

4.Set操作

简介

图片.png
图片.png

api

sadd k1 v1 v2 v3 向集合添加一个或多个成员
smembers k1 返回集合中的所有成员
sismember v1 成功返回1,不是返回0
scard k1 返回集合的元素个数
srem k1 v2 删除集合中的v2 成功返回1,失败返回0
spop k1 随机弹出一个元素
srandemmber k1 随机取出一个元素,原集合不变
smove k1 k2 v3 把集合的一个元素取出来,放到另一个集合
sinter k1 k2 两个集合的交集
sunion k1 k2 两个集合的并集
sdiff k1 k2 k1有,k2没有的元素

数据结构

redis
java图片.png
图片.png

5.Hash操作

简介

图片.png
图片.png
图片.png
方法2,数据分散

api

hset user01 id 01 name zhangsan 赋值操作
hget user01 id 取值操作
hmget user01 id name 批量取值操作
hexists user01 id 判断field是否存在
hkeys user01 获得所有field
hvals user01 获取所有值
hincrby user01 user01 age 2 根据key,field增加2
hsetnx user01 address fuzhou 字段不存在时候,赋值操作

数据结构

图片.png

6.Zset操作

简介

图片.png

api

zadd
zrange withscores
zrangebyscore
zrevrangebyscore
zincrby
zrem
zcount
zrank

数据结构

hash 跳跃表
图片.png

跳跃表

图片.png
图片.png
图片.png

7.Bitmaps

简介

能进行位运算的字符串,不是新的数据类型
图片.png
图片.png
图片.png

api

setbit key offset value 偏移量从零开始
图片.png
图片.png
getbit key offset 获取bitmaps中某个偏移量的值 返回1 0

bitcount
图片.png
图片.png
图片.png
bitop
图片.png
图片.png
.图片.png

对比set

图片.png图片.png
图片.png

数据结构

8.HyperLogLog

简介

图片.png
图片.png
统计数量,合并,不返回集合元素,去重效果像set

api

pdadd
pfcount
pfmerge

9.Geospatial

简介

图片.png

api

geoadd
图片.png
geopos 根据城市名称获得坐标

geodist 获得两点之间的距离,有单位
图片.png
georadius 以某个经纬度为中心,半径多少公里以内的城市