Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据范例
一、redis 服务器配置–redis.conf 配置
1、服务器端设定
1)设置服务器以守护进程的方式运行: daemonize yes|no
2)绑定主机地点: bind 127.0.0.1
3)设置服务器端口号: port 6379
4)设置数据库数目: databases 16
2、redis 现实操作演示–redis.conf 配置(redis-server)
- # 切换到 redis 安装目录 (redis-server)
- cd /usr/local/redis/redis-4.0.0/
- # 查看 redis 服务是否后台启动成功:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- # 杀死 redis 服务进程(如果已经启动 redis 服务,可以先停止服务,如:PID 1742)
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 1742
- # 修改 conf/redis-6379.conf 配置文件,添加绑定主机地址: bind 127.0.0.1 相关配置。
- vim conf/redis-6379.conf
- # 保存以下内容即可:
- port 6379
- daemonize yes
- logfile "6379.log"
- # redis 持久化 -- RDB 相关配置
- # data 目录为新建目录(设置存储.rdb文件的路径)
- dir /usr/local/redis/redis-4.0.0/data
- # 设置本地数据库文件名:
- dbfilename dump-6379.rdb
- # 设置存储至本地数据库时是否压缩数据
- rdbcompression yes
- # 设置是否进行 RDB 文件格式校验
- rdbchecksum yes
- # save配置(每10秒有2次数据变化就自动保存)
- save 10 2
- # 添加如下配置(AOF存储功能)
- # 开启AOF持久化功能
- appendonly yes
- # AOF写数据策略(每次)
- appendfsync always
- # 设置文件名
- appendfilename appendonly-6379.aof
- # 绑定主机地址:
- bind 127.0.0.1
- # 设置数据库数量:
- databases 16
- # 指定配置文件,启动 redis 服务:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- root 1742 1 0 22:40 ? 00:00:00 redis-server *:6379
- root 1748 1367 0 22:40 pts/2 00:00:00 grep --color=auto redis-
复制代码 3、redis 现实操作演示–打开另一客户端连接(redis-cli-01)
4、日志配置
1)设置服务器以指定日志记载级别: loglevel debug|verbose|notice|warning
2)日志记载文件名: logfile 端口号.log
5、注意事项:
日志级别开发期设置为 verbose 即可,生产情况中配置为 notice,简化日志输出量,降低写日志 IO 的频度。
6、客户端配置
1)设置同一时间最大客户端连接数,默认无限定。当客户端连接到达上限,Redis 会关闭新的连接
2)客户端闲置等待最大时长,到达最大值后关闭连接。如需关闭该功能,设置为 0
7、多服务器快捷配置
- 导入并加载指定配置文件信息,用于快速创建 redis 公共配置较多的 redis 实例配置文件,便于维护。
- include /path/server-端口号.conf
复制代码 二、redis 高级数据范例–bitmaps 介绍与基本操作
1、Bitmaps 范例的基础操作
1)获取指定 key 对应偏移量上的 bit 值
2)设置指定 key 对应偏移量上的 bit 值,value 只能是 1 或 0
2、redis 现实操作演示–bitmaps 介绍与基本操作
- # 切换到 redis 安装目录 (redis-server 服务端)
- cd /usr/local/redis/redis-4.0.0/
- # 查看 redis 服务是否后台启动成功:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- # 杀死 redis 服务进程(如果已经启动 redis 服务,可以先停止服务,如:PID 1742)
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 1742
- # 指定配置文件,启动 redis 服务:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- root 1742 1 0 22:40 ? 00:00:00 redis-server *:6379
- root 1748 1367 0 22:40 pts/2 00:00:00 grep --color=auto redis-
- # 打开另一客户端连接(redis-cli-01)
- # 切换到 redis 安装目录(redis-cli-01)
- cd /usr/local/redis/redis-4.0.0/
- # 指定端口号,启动 redis 客户端:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379
- # bitmaps 高级数据类型操作
- 127.0.0.1:6379> setbit bits 0 1
- (integer) 0
- 127.0.0.1:6379> getbit bits 0
- (integer) 1
- 127.0.0.1:6379> getbit bits 10
- (integer) 0
- 127.0.0.1:6379> setbit bits 100000000 1
- (integer) 0
- (1.21s)
复制代码 三、redis 高级数据范例–bitmaps扩展操作
1、Bitmaps 范例的扩展操作
1)业务场景:电影网站
- 统计天天某一部电影是否被点播
- 统计天天有多少部电影被点播
- 统计每周/月/年有多少部电影被点播
- 统计年度哪部电影没有被点播
2)业务分析:
58-Bitmaps范例的扩展操作.png
2、Bitmaps 范例的扩展操作
1)对指定 key 按位进行交、并、非、异或操作,并将效果保存到 destKey 中
- bitop op destKey key1 [key2...]
- and : 交
- or : 并
- not : 非
- xor : 异或
复制代码 2)统计指定 key 中 1 的数目
3、redis 现实操作演示–bitmaps 扩展操作
- # 切换到 redis 安装目录 (redis-server 服务端)
- cd /usr/local/redis/redis-4.0.0/
- # 查看 redis 服务是否后台启动成功:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- # 杀死 redis 服务进程(如果已经启动 redis 服务,可以先停止服务,如:PID 1742)
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# kill -s 9 1742
- # 指定配置文件,启动 redis 服务:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-server conf/redis-6379.conf
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# ps -ef | grep redis-
- root 1742 1 0 22:40 ? 00:00:00 redis-server *:6379
- root 1748 1367 0 22:40 pts/2 00:00:00 grep --color=auto redis-
- # 打开另一客户端连接(redis-cli-01)
- # 切换到 redis 安装目录(redis-cli-01)
- cd /usr/local/redis/redis-4.0.0/
- # 指定端口号,启动 redis 客户端:
- root@WIN-20240529BJA:/usr/local/redis/redis-4.0.0# redis-cli -p 6379
- # bitmaps 高级数据类型操作
- # 清空数据
- 127.0.0.1:6379> flushall
- OK
- # 设置 6 个值
- 127.0.0.1:6379> setbit 20880808 0 1
- (integer) 0
- 127.0.0.1:6379> setbit 20880808 4 1
- (integer) 0
- 127.0.0.1:6379> setbit 20880808 8 1
- (integer) 0
- 127.0.0.1:6379> setbit 20880808 0 1
- (integer) 1
- 127.0.0.1:6379> setbit 20880809 0 1
- (integer) 0
- 127.0.0.1:6379> setbit 20880809 5 1
- (integer) 0
- 127.0.0.1:6379> setbit 20880809 8 1
- # 统计数量
- 127.0.0.1:6379> bitcount 20880808
- (integer) 3
- 127.0.0.1:6379> bitcount 20880809
- (integer) 3
- 127.0.0.1:6379> setbit 20880808 6 1
- (integer) 0
- 127.0.0.1:6379> bitcount 20880808
- (integer) 4
- # 合并数据
- 127.0.0.1:6379> bitop or 08-09 20880808 20880809
- (integer) 2
- # 统计合并后的数据个数
- 127.0.0.1:6379> bitcount 08-09
- (integer) 5
复制代码 4、redis 应用 场景:
1)redis 用于控制数据库表主键 id,为数据库表主键提供生成战略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。
2)redis 控制数据的生命周期,通过数据是否失效控制业务活动,适用于所有具有时效性限定控制的操作。
3)redis 可应用于各种结构型和非结构型高热度数据访问加速。
4)redis 应用于购物车数据存储计划。
5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储计划。
6)redis 应用于具有操作先后顺序的数据控制。
7)redis 应用于最新消息展示。
8)redis 应用于随机保举类信息检索,比方热门歌单保举,热门消息保举,热卖旅游线路,应用APP保举大V保举等。
9)set 范例数据的扩展操作:
- redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
- 表现共同关注(一度)。
- 表现共同挚友(一度)。
- 由用户A出发,获取到挚友用户B的挚友信息列表(一度)。
- 由用户A出发,获取到挚友用户B的购物清单列表(二度)。
- 由用户A出发,获取到挚友用户B的游戏充值列表(二度)。
10)redis 应用于同范例不重复数据的归并操作。
11)redis 应用于同范例数据的快速去重。
12)redis 应用于基于黑名单与白名单设定的服务控制。
13)redis 应用于计数器组合排序功能对应的排名。in
14)redis 应用于定时使命执行顺序管理或使命过期管理。
15)redis 应用于即时使命/消息队列执行管理。
16)redis 应用于限时按次结算的服务控制。
17)redis 应用于基于时间顺序的数据操作,而不关注具体时间。
18)redis 应用基于状态控制的批量使命执行.
19)redis 应用基于分布式锁对应的场景控制。
20) 导入并加载指定配置文件信息,用于快速创建 redis 公共配置较多的 redis 实例配置文件,便于维护。
21)redis 应用于信息状态统计。
四、redis 高级数据范例–HyperLogLog
1、统计独立 UV
1)原始方案:set 存储每个用户的id(字符串)。
2)改进方案:Bitmaps 存储每个用户状态(bit)。
3)全新的方案:Hyperloglog。
2、HyperLogLog 基数统计。
- 基数是数据集去重后元素个数。
- HyperLogLog 是用来做基数统计的,运用了 LogLog 的算法。
如:
- {1, 3, 5, 7, 5, 7, 8} 基数集: {1, 3, 5 ,7, 8} 基数:5
- {1, 1, 1, 1, 1, 7, 1} 基数集: {1,7} 基数:2
复制代码 3、LogLog 算法:
4、HyperLogLog 范例的基本操作
1)添加数据: pfadd key element [element …]
2)统计数据: pfcount key [key …]
3)归并数据: pfmerge destkey sourcekey [sourcekey…]
4)示例:
- 127.0.0.1:6379> flushall
- OK
- 127.0.0.1:6379> pfadd hll 001
- (integer) 1
- 127.0.0.1:6379> pfadd hll 001
- (integer) 0
- 127.0.0.1:6379> pfadd hll 001
- (integer) 0
- 127.0.0.1:6379> pfadd hll 001
- (integer) 0
- 127.0.0.1:6379> pfadd hll 001
- (integer) 0
- 127.0.0.1:6379> pfadd hll 002
- (integer) 1
- 127.0.0.1:6379> pfadd hll 002
- (integer) 0
- 127.0.0.1:6379> pfcount hll
- (integer) 2
复制代码 5、redis 应用 场景:
1)redis 用于控制数据库表主键 id,为数据库表主键提供生成战略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。
2)redis 控制数据的生命周期,通过数据是否失效控制业务活动,适用于所有具有时效性限定控制的操作。
3)redis 可应用于各种结构型和非结构型高热度数据访问加速。
4)redis 应用于购物车数据存储计划。
5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储计划。
6)redis 应用于具有操作先后顺序的数据控制。
7)redis 应用于最新消息展示。
8)redis 应用于随机保举类信息检索,比方热门歌单保举,热门消息保举,热卖旅游线路,应用APP保举大V保举等。
9)set 范例数据的扩展操作:
- redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
- 表现共同关注(一度)。
- 表现共同挚友(一度)。
- 由用户A出发,获取到挚友用户B的挚友信息列表(一度)。
- 由用户A出发,获取到挚友用户B的购物清单列表(二度)。
- 由用户A出发,获取到挚友用户B的游戏充值列表(二度)。
10)redis 应用于同范例不重复数据的归并操作。
11)redis 应用于同范例数据的快速去重。
12)redis 应用于基于黑名单与白名单设定的服务控制。
13)redis 应用于计数器组合排序功能对应的排名。in
14)redis 应用于定时使命执行顺序管理或使命过期管理。
15)redis 应用于即时使命/消息队列执行管理。
16)redis 应用于限时按次结算的服务控制。
17)redis 应用于基于时间顺序的数据操作,而不关注具体时间。
18)redis 应用基于状态控制的批量使命执行.
19)redis 应用基于分布式锁对应的场景控制。
20) 导入并加载指定配置文件信息,用于快速创建 redis 公共配置较多的 redis 实例配置文件,便于维护。
21)redis 应用于信息状态统计。
22)redis 应用于独立信息统计。
6、HyperLogLog 相关阐明
- 用于进行基数统计,不是聚集,不保存数据,只记载数目而不是具体数据。
- 核心是基数估算算法,终极数值存在肯定误差。
- 误差范围:基数估计的效果是一个带有 0.81% 标准错误的近似值。
- 耗空间极小,每个 hyperloglog key 占用了 12K 的内存用于标记基数。
- pfadd 下令不是一次性分配12K内存利用,会随着基数的增长内存渐渐增大。
- Pfmerge 下令归并后占用的存储空间为 12K,无论归并之前数据量多少。
五、redis 高级数据范例–GEO
1、GEO 范例的基本操作
1)添加坐标点:geoadd key longitude latitude member [longitude latitude member …]
2)获取坐标点:geopos key member [member …]
3)计算坐标点距离:geodist key member1 member2 [unit]
2、GEO范例的基本操作
1)添加坐标点:
- georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
复制代码 2)获取坐标点:
- georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
复制代码 3)计算经纬度:
- geohash key member [member ...]
复制代码 3、示例:
- # 清空数据
- 127.0.0.1:6379> flushall
- OK
- # 定义坐标数据
- 127.0.0.1:6379> geoadd geos 1 1 a
- (integer) 1
- 127.0.0.1:6379> geoadd geos 2 2 b
- (integer) 1
- # 取出 a 点
- 127.0.0.1:6379> geopos geos a
- 1) 1) "0.99999994039535522"
- 2) "0.99999945914297683"
-
- # 计算 a 坐标到 b 坐标的距离
- 127.0.0.1:6379> geodist geos a b
- "157270.0561"
- # 计算 a 坐标到 b 坐标的距离(以‘米’ 为单位)
- 127.0.0.1:6379> geodist geos a b m
- "157270.0561"
- # 计算 a 坐标到 b 坐标的距离(以“千米” 为单位)
- 127.0.0.1:6379> geodist geos a b km
- "157.2701"
- # 创建坐标点(田字格)
- 127.0.0.1:6379> geoadd geos 1 1 1,1
- (integer) 1
- 127.0.0.1:6379> geoadd geos 1 2 1,2
- (integer) 1
- 127.0.0.1:6379> geoadd geos 1 3 1,3
- (integer) 1
- 127.0.0.1:6379> geoadd geos 2 1 2,1
- (integer) 1
- 127.0.0.1:6379> geoadd geos 2 2 2,2
- (integer) 1
- 127.0.0.1:6379> geoadd geos 2 3 2,3
- (integer) 1
- 127.0.0.1:6379> geoadd geos 3 1 3,1
- (integer) 1
- 127.0.0.1:6379> geoadd geos 3 2 3,2
- (integer) 1
- 127.0.0.1:6379> geoadd geos 3 3 3,3
- (integer) 1
- 127.0.0.1:6379> geoadd geos 5 5 5,5
- (integer) 1
- # 统计 2,2 这个点周围 180km 范围内的 点
- 127.0.0.1:6379> georadiusbymember geos 2,2 180 km
- 1) "1,1"
- 2) "2,1"
- 3) "1,2"
- 4) "2,2"
- 5) "3,1"
- 6) "3,2"
- 7) "1,3"
- 8) "2,3"
- 9) "3,3"
- # 统计 2,2 这个点周围 120km 范围内的 点
- 127.0.0.1:6379> georadiusbymember geos 2,2 120 km
- 1) "1,2"
- 2) "2,2"
- 3) "2,3"
- 4) "2,1"
- 5) "3,2"
- # 统计 2,2 这个点周围 1800km 范围内的 点
- 127.0.0.1:6379> georadiusbymember geos 2,2 1800 km
- 1) "1,1"
- 2) "2,1"
- 3) "1,2"
- 4) "2,2"
- 5) "3,1"
- 6) "3,2"
- 7) "1,3"
- 8) "2,3"
- 9) "3,3"
- 10) "5,5"
- # 统计 经纬度 1.5 1.5 这个点周围 90km 范围内的 点
- 127.0.0.1:6379> georadius geos 1.5 1.5 90 km
- 1) "1,2"
- 2) "2,2"
- 3) "1,1"
- 4) "2,1"
- # 统计 2,2 这个点 的 hash 值。
- 127.0.0.1:6379> geohash geos 2,2
- 1) "s037ms06g70"
复制代码 4、redis 应用 场景:
1)redis 用于控制数据库表主键 id,为数据库表主键提供生成战略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。
2)redis 控制数据的生命周期,通过数据是否失效控制业务活动,适用于所有具有时效性限定控制的操作。
3)redis 可应用于各种结构型和非结构型高热度数据访问加速。
4)redis 应用于购物车数据存储计划。
5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储计划。
6)redis 应用于具有操作先后顺序的数据控制。
7)redis 应用于最新消息展示。
8)redis 应用于随机保举类信息检索,比方热门歌单保举,热门消息保举,热卖旅游线路,应用APP保举大V保举等。
9)set 范例数据的扩展操作:
- redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
- 表现共同关注(一度)。
- 表现共同挚友(一度)。
- 由用户A出发,获取到挚友用户B的挚友信息列表(一度)。
- 由用户A出发,获取到挚友用户B的购物清单列表(二度)。
- 由用户A出发,获取到挚友用户B的游戏充值列表(二度)。
10)redis 应用于同范例不重复数据的归并操作。
11)redis 应用于同范例数据的快速去重。
12)redis 应用于基于黑名单与白名单设定的服务控制。
13)redis 应用于计数器组合排序功能对应的排名。in
14)redis 应用于定时使命执行顺序管理或使命过期管理。
15)redis 应用于即时使命/消息队列执行管理。
16)redis 应用于限时按次结算的服务控制。
17)redis 应用于基于时间顺序的数据操作,而不关注具体时间。
18)redis 应用基于状态控制的批量使命执行.
19)redis 应用基于分布式锁对应的场景控制。
20) 导入并加载指定配置文件信息,用于快速创建 redis 公共配置较多的 redis 实例配置文件,便于维护。
21)redis 应用于信息状态统计。
22)redis 应用于独立信息统计。
23)redis 应用于地理位置计算。
上一节关联链接请点击:
# Redis 入门到精通(七)-- redis 删除战略
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |