redis启动与关闭
启动redis
redis-server ~/redis-6.2.6/redis.conf
关闭redis
redis-cli shutdown
redis相关操作
(操作redis感觉像使用一个map/笑)
切换数据库,redis默认有16个库
select 2
redis基于key进行操作,使用dbsize查看key的数量
dbsize
清空数据库
flushdb //清空当前库
flushall //清空全部库
key相关操作
前面提到过redis操作和map很像,key的操作也差不多
查看当前库所有key
keys *
判断key的类型,redis中数据有不同的类型,比较常见的就是string
set k1 1
type k1 // string
判断key是否存在
exists k1
删除key
del k1
设置key的过期时间(单位s),个人认为很重要的特性,毕竟redis经常用作缓存。使用ttl可以查看还剩多少时间
expire1 k1 10
ttl k1 // 8
redis数据类型及相关操作
string
添加和取值
set k1 1
setnx k1 1 // not exist ?
get k1 // 1
追加内容(就和普通的string一样)
append k1 2 // 12
获取str的长度
strlen k1 // 2
自增和自减(必须是number)
incr k1
decr k1
双向链表list
插入和删除,下面分别是左插和右插,如果pop以后元素为空那这个key也就失效了
lpush k1 1
rpush k1 1
lpop k1
rpop k1
rpoplpush k1 k2 // 字面意思,从k1右侧pop出一个值插到k2左侧
获取元素,lrange用于获取多个元素,index获取特定下表的元素
lrange k1 0 -1
index k1 0
获取list长度
llen k1
插入&&删除&&替换
linsert k3 before 1 2 // 在k3中从左向右查找1,找到后将2插入前方
lrem k3 1 2 // 从左向右查找并删除1个2
lset k3 0 3 //替换特定index的值
set
set的特征就是内部元素无序且不重复,下面都是比较基本的操作
添加&&删除
sadd k1 1 2 3 //一次添加多个元素
srem k1 1 //删除某个元素
spop k1 //随机算出k1中的一个元素
smove k1 k2 1
获取set本身的信息
smembers k1 // 获取所有成员
sismmember k1 1 // k1中是否有1
scard k1 // 成员数量
srandmember k1 2 // 冲k1随机取出两个值
逻辑操作,个人认为set比较重要的功能
sinter k1 k2 //交集
sunion k1 k2 //并集
sdiff k1 k2 //差集 k1中存在 k2中不存在
hash
和其他的操作基本相同
添加数据
hset k1 k 1
hmset k1 k 1 l 2 m 3 //批量设置数据
hsetnx k1 k 1 //和setnx一样
获取数据
hget k1 k
hkeys //获取集合中所有的键
hvals //获取所有的值
判断值是否存在
hexists k1 k
有序集合zset
相对于普通的set,zset给每个值加了一个权重,根据权重进行排序,操作基本相同
添加
zadd k1 100 1 //zadd <key> <score> <val>
获取
zrange k1 0 5 //获取0-5之间的元素
zrangebyscore k1 1 3 //获取score在1-3之间的元素,包括1和3
删除
zrem k1 1
统计数量
zcount k1 1 3 //score在1-3之间的元素数量
获取排名
zrank k1 1
bitmaps
按照我的理解就是一个array,只不过每一位是一个bit,值只有0/1
添加&&获取
setbit k1 100 1 //将index100处设置为1
getbit k1 100
获取数量
bitcount k1 1 100 //1-100之间1的个数
逻辑操作
bitop and/or/not/xor
hyperloglog
hll的优势就是空间很小,如果只关注基数本身无疑是比set更好的选择
计算基数
pfcount k1 k2 k3
合并hll
pfmerge target k1 k2 k3
Geospatial
很方便的数据类型,比如缓存用户的gps信息用于定位,还可以很方便的算出距离
添加
geoadd city 120 30 shanghai
取值
geopos city shanghai
距离
geodist city shanghai beijing m