环境准备
- 安装Redis Server
您可以参考这篇文章《01 基础环境搭建 / 13、安装Redis》 - 启动两台Redis Server
192.168.174.52:6379 / Garen666
192.168.174.15:6379 / Garen666
redis-cli客户端
# 进入客户端
redis-cli
# 打开帮助文档
redis-cli --help
常用参数
参数 | 英文描述 | 中文描述 |
---|---|---|
-h <hostname> | Server hostname (default: 127.0.0.1). | 主机IP |
-p <port> | Server port (default: 6379). | 端口号 |
-n <db> | Database number. | 数据库编号0~15 |
-a <password> | Password to use when connecting to the server. | 密码 |
--raw | Use raw formatting for replies (default when STDOUT is not a tty). | 格式化输出,如:中文显示unicode码,加上这个参数就显示中文。 |
命令演示
最基础的命令SET/GET
加过期时间(秒)
加过期时间(毫秒)
只能新增
只能修改
通用组命令
常用命令:
- DEL
- EXISTS
- EXPIRE
- KEYS
- RENAME
- TTL
- TYPE
string组命令
通用
- SET
- GET
- GETSET
- MGET
- MSET
- PSETEX
- SETEX
- SETNX
字符串
- APPEND
- GETRANGE
- SETRANGE
- STRLEN
数值
- DECR
- DECRBY
- INCR
- INCRBY
- INCRBYFLOAT
位图
1字节 = 8个二进制位(0000 0000)
offset是二进制位的索引
-
SETBIT
上面操作后的结果:
-
GETBIT
-
BITPOS
继续上面的操作,start、end是指字节的索引,查bit第一次出现的位置
-
BITCOUNT
继续上面的操作,start、end是指字节的索引,查1出现的次数
-
BITOP
准备a、b
a、b按位做与运算,结果放到andkey中
a、b按位做或运算,结果放到orkey中
-
BITFIELD
TODO
位图的应用场景
- 场景1
需求:用户系统,统计用户登录天数,且时间窗口随机
分析:一个二进制位代表一天,一年365或366天,366位/8 = 46字节
实现:
garen用户为例,哪天登录就在对应哪天的位索引的值设置成1
比如第1、10、365天登录。
setbit garen 0 1
setbit garen 9 1
setbit garen 364 1
老板要求查出garen这一年登录的次数
bitcount garen 0 -1
- 场景2
需求:
京东618,用户登录就送礼物。京东有2亿用户,那么要备多少货?
用户:僵尸用户、冷热用户、忠诚用户
需要统计活跃用户数量,随机时间窗口,比如1号-3号,连续登录,要去重
分析:
日期作为key,用户id与一个二进制位映射,比如1 garen,2 gosling,7 lxl …
用户登录,二进制位设置为1
实现:
上一篇《04 高并发负载均衡:基于keepalived的LVS高可用搭建》
下一篇《06 Redis的list、set、hash、sorted_set、skiplist》