什么是 Redis
Redis(Remote Dictionary Server)
,即远程字典服务,是一个开源的使用C
语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value
数据库,并提供多种语言的API
。
Redis 实践
Redis 安装
yum install redis
Redis 配置
修改/etc/redis.conf
即可。
Redis 启动
进程方式
nohup redis-server > redis.log 2>&1 &
守护进程方式
修改/etc/redis.conf
中的 daemonize
为 yes
后,以 redis-server
方式启动。
Redis 的数据类型和基础操作
类型 | 添加 | 查询 | 删除 | 最大容量 | 备注 |
String | set k v | get k | del k | 一个键最大能存储 512MB | 重复添加会覆盖历史数据 |
Hash | hmset k f1 v1 f2 v2 | hmget k f1 | del k | 每个 hash 可以存储 2^32-1 个键值对(大约 43 亿) | 重复添加会覆盖历史数据 |
List | lpush k v1 v2 | lrange k 0 10 | del k | 每个 List 可以存储 2^32-1 个元素(大约 43 亿) | 列表内数据可重复,按照插入顺序排序 |
Set | sadd k v1 v2 | smembers k | del k | 每个 Set 可以存储 2^32-1 个元素(大约 43 亿) | 无序(通常按照插入顺序排序),集合内数据不可重复,重复添加无效,集合基于 Hash 实现,增删查复杂度为 O(1) |
Zset | zadd k s1 v1 s2 v2 | zrangebyscore k 0 10(仅展示 0 到 10 分的值)zrange k 0 10(仅展示前 10 个 | del k | 每个 Zset 可以存储 2^32-1 个元素(大约 43 亿) | 按照分数顺序排序(分数约小越靠前),其余属性类 Set |
Redis-cli 中怎么展示中文
redis-cli --raw
以这种方式启动即可
连接远程 Redis 服务
redis-cli -h host -p port -a password
HyperLoglog&使用场景
HyperLoglog
是用来做基数统计的算法(非 redis
独有),其得益于优秀的算法可以以很小的内存计算出大数据的基数。对于相同的元素会去重,计算出的结果为近似结果,在大数据场景下我们可以接受这个误差,因为其拥有良好的性能。
pfadd 添加
# pfadd添加 127.0.0.1:6379> pfadd kk 1 2 1 3 4 4 1 127.0.0.1:6379> pfcount kk 4 复制代码
以上,
1 2 1 3 4 4
这几个元素中,去重后就剩下4
个唯一的元素,所以在对其进行基数统计的时候,结果为4
。
pfmerge 合并
对于两个 HLL
对象,我们可以将其合并,结果会取他们的并集。
# pfmerge合并 127.0.0.1:6379> pfadd qq 5 6 5 7 1 1 127.0.0.1:6379> pfmerge res kk qq OK 127.0.0.1:6379> pfcount res 7 复制代码
以上,
HLL
算法后有3
个元素,和kk
的4
个基数元素合并后将会有7
个基数元素,经实践,结果无误。通常
HLL
用于全球注册用户统计,页面实时UV
,在线用户数等等。