启动命令:
redis-server /myredis/redis.conf(指定配置文件)
redis-cli -a 123456 -p 6379(-a 密码 -p 端口号)
redis-cli -a 123456 --raw(解决中文乱码)
关闭命令:
redis-cli -a 123456 shutdown(单实例)
redis-cli -p 6379 shutdown(多实例)
常用命令:
通用:
keys *:查看当前库所有key
exists key:判断key是否存在
type key:查看key的类型
del key:删除key
unlink key:非阻塞删除
ttl key:查看key还有多久过期
expire key 秒数:为key设置过期时间
move key dbindex[0-15]:将key移动到对应的数据库
select dbindex[0-15]:切换数据库
dbsize:查看当前数据库的key数量
flushdb:清空数据库
flushall:通杀所有库
String类型:使用场景:点赞商品或视频(incr decr) 或 是否喜欢文章(incr decr)
set key value:设置key
get key:获取key的value
mset k1 v1 k2 k2……:批处理设置key
mget k1 k2:批处理获取key
msetnx:批处理,但有原子性
getrange:截取value
getset:先获取再覆盖
setrange:覆盖value指定位置之后的值
incr:递增1
incrby:递增指定数
decr:递减1
decrby:递减指定数。
strlen:长度
append:追加
setex:相当于set+expire
列表类型:使用场景:微信公众号的消息(lpush lrange)
lpush key v1 v2 v3:从左开始添加
rpush key v1 v2 v3:从右可以添加
lrange key start end:遍历 start为0,end为-1,表示全部
lpop key :弹出,从左开始弹
rpop key :弹出,从右开始弹
lindex key index:按照索引下标获取元素
llen:元素个数
lrem:删除指定个数的指定元素
ltrim:截取指定范围的值后赋值给key
rpoplpush key1 key2:从key1中获取一个放到key2中
lset key index value:设置指定位置的值
linsert key before/after value1 value1:在已有值value1前/后插入value2
Hash类型:使用场景:jd早期购物车
hset key field value:设置key
hget key field:获取key
hgetall:获取key的所有filed和value
hdel:删除指定key的filed
hlen:获取key的数量
hexists key filed:判断指定filed是否存在
hkeys/hvals:单独列出filed或value
hincrby/hincrbyfloat:整数递增或小数递增指定数
hsetnx:不存在赋值,存在无效
Set类型:使用场景:微信抽奖小程序(spop)微信朋友圈点赞查看共同好友(sinter)
元素无重复
sadd key v1 v2 v3:添加元素
smembers key:遍历元素
sismember:判断是否有指定元素
srem:删除元素
scard:统计有多少元素
srandmember key [size]:随机展现size个元素,元素不删除
spop key [size]:弹出size个元素
smove key1 key2 value:把key1中已存在的value放到key2上
**重点
(差集运算)sdiff key1 key2 :属于key1但不属于key2的值的集合
(并集运算)sunion key1 key2:属于key1或者属于key2的元素的集合
(交集运算)sinter key1 key2:属于key1且属于key2的元素的集合,有个sintercard可以了解一下
**
ZSet类型(有序集合):使用场景:排行榜 根据商品销售对商品进行排序
zadd key score v1 score v2:添加元素,根据score排序
zrange key start end [withscores]:遍历
zrevrange key start end:反转遍历
zrangebyscore key [(] min max:遍历指定范围内的元素,加上括号表示不等于。
zscore key value:获取元素score
zcard:元素个数
zrem:删除
zincreby key score value:为某个元素添加指定分数
zcount key min max:获取指定分数范围的元素个数
zmpop:可以去了解一下
zrank key value:获取下标
zrevrank:逆序获取下标
位图(bitmap)类型:使用场景:(一年365天的登录 )
用户是否登录过,电影或广告是否被点击过,上班打卡
setbit key offset value:设置第offset位为1
getbit key offset:获取第offset的值(0或1)
strlen:统计占用了多少字节(8位一组)
bitcount:一共有多少个1
bitop and key3 key1 key2:key1 和 key2 中相等的位存放在key3中
基数统计类型(HyperLoglog):使用场景:天猫网的uv(独立访客)的统计
统计每天大概有多少人(重复ip算一次)浏览过页面
基数:去重的数据的个量
pfadd key v1 v2 v3 v4:添加元素
pfcount key:返回key的基数预估值
pfmerge key1 key2 key3:把key2 和key3合并到key1
地理空间(GEO):
geoadd key 经度 纬度 地点:为key中地点添加经纬度
geopos:返回key中地点的经纬度
geohash:以geohash格式返回key中地点的经纬度
geodist key 地点1 地点2 单位:两个位置的距离
georadius :以半径为中心,查找附近的地点
georadiusbymember:找出指定地点附近的地点
流(Stream)类型:使用场景:消息队列 (还是使用kafka吧)
消息队列
xinfo:打印stream/consumer/group的详细信息
生产消息的命令:
xadd:添加消息到队列末尾
xtrim:限制stream的长度,如果过长会截取
xdel:删除消息
xlen:stream的消息长度
xrange:获取消息列表
xread:获取消息
消费消息的命令:
xgroup create:用于创建消费者组
xreadgroup group:消费
xpending:查询消费组中已读未确认的消息,查询消费者具体读取了哪些数据
xack:向消息队列确认消息已读取