当前位置: 首页 > news >正文

redis其他类型和配置文件

很多博客只讲了五大基本类型,确实,是最常用的,而且百分之九十的程序员对于Redis只限于了解String这种最常用的。但是我个人认为,既然Redis官方提供了其他的数据类型,肯定是有相应的考量的,在某些特殊的业务场景中,这些特殊的类型还是能够给我们多一种解决思路!
Geospatial: 地理位置
georadius(查询附近位置)操作
再Redis中,可能会有一定的误差性。 官方给出的误差率是0.81%。
如果在实际业务中,允许一定的误差值,我们可以使用基数统计来计算~效率非常高

Hyperloglog: 基数

Bitmap: 位存储

127.0.0.1:6379> setbit login 1 1   #添加周一已登陆 为1
(integer) 0
127.0.0.1:6379> setbit login 2 1
(integer) 0
127.0.0.1:6379> setbit login 3 1
(integer) 0
127.0.0.1:6379> setbit login 4 0  #添加周四已登陆 为0
(integer) 0
127.0.0.1:6379> setbit login 5 0
(integer) 0
127.0.0.1:6379> setbit login 6 1
(integer) 0
127.0.0.1:6379> setbit login 7 0
(integer) 0
127.0.0.1:6379> getbit login 1  #获取周一是否登录
(integer) 1
127.0.0.1:6379> getbit login 4  #获取周四是否登陆
(integer) 0
127.0.0.1:6379> bitcount login  #统计这周登陆的天数
(integer) 4

总结:实际需求中,可能需要我们统计用户的登陆信息,员工的打卡信息等等。只要是事务的只有两个状态的,我们都可以用Bitmap来进行操作!!!

您提供的是一个Redis服务器的配置文件内容。以下是对每项配置的中文解释:

- **bind 0.0.0.0**:Redis监听所有可用的网络接口(包括本地回环和所有外部网络接口)。

- **protected-mode no**:关闭保护模式,这允许从任何主机连接到Redis,除非进一步配置了访问控制(如密码)。

- **port 6379**:设置Redis监听的端口号。

- **tcp-backlog 511**:设置TCP连接的backlog队列大小。这通常设置为高于一般系统默认值以处理大量连接。

- **timeout 0**:客户端空闲时间(秒),0表示关闭这个功能,不会断开空闲连接。

- **tcp-keepalive 300**:TCP连接保持活跃的时间间隔(秒),用于检测对方是否还保持连接状态。

- **daemonize yes**:Redis以守护进程的方式运行,即在后台运行。

- **pidfile /var/run/redis_6379.pid**:当Redis以守护进程方式运行时,PID文件的路径。

- **loglevel notice**:日志级别设置为notice,适度详细的日志级别,通常用于生产环境。

- **logfile "./redis.log"**:日志文件的路径。相对路径表示在当前工作目录下。

- **databases 16**:设置数据库的数量。Redis默认有16个数据库(编号0-15)。

- **always-show-logo no**:启动时是否显示Redis的ASCII艺术LOGO。

- **set-proc-title yes**:是否设置进程标题,这有助于监控和识别Redis实例。

- **proc-title-template "{title} {listen-addr} {server-mode}"**:设置进程标题的格式。

- **stop-writes-on-bgsave-error yes**:如果后台保存(BGSAVE)出错,停止写入操作。

- **rdbcompression yes**:对RDB文件进行压缩。

- **rdbchecksum yes**:在写入RDB文件时,加入CRC64校验和,以增加数据完整性检查。

- **dbfilename dump.rdb**:RDB文件的名称。

- **rdb-del-sync-files no**:在完成RDB文件保存后,是否删除旧的RDB文件。

- **dir ./**:工作目录,RDB文件和AOF文件将保存在此目录。

- **masterauth abc123**:如果Redis作为从节点,当连接到主节点时使用的密码。

- **replica-serve-stale-data yes**:如果从节点与主节点失去连接,是否继续提供可能过期的数据。

- **replica-read-only yes**:从节点是否为只读。

- **repl-diskless-sync no**:是否启用无盘复制(直接从主节点复制到从节点内存,不经过磁盘)。

- **repl-diskless-sync-delay 5**:无盘复制的延迟时间(秒)。

- **repl-disable-tcp-nodelay no**:是否在复制连接上禁用TCP_NODELAY选项。

- **replica-priority 100**:从节点的优先级,用于Sentinel(哨兵)系统选择新的主节点- **acllog-max-len 128**:ACL日志的最大长度。

- **requirepass abc123**:设置连接Redis所需的密码。

- **lazyfree-lazy-* no**:一系列关于是否异步释放数据的配置,全部设置为否意味着数据释放是同步的。

- **oom-score-adj no** 和 **oom-score-adj-values 0 200 800**:调整Redis在OOM(Out of Memory) killer下的优先级。设置为no表示不调整。

- **disable-thp yes**:禁用透明大页(Transparent Huge Pages),这通常可以减少内存碎片。

- **appendonly no**:是否启用AOF(Append Only File)持久化模式。

- **appendfilename "appendonly.aof"**:AOF文件名。

- **appendfsync everysec**:AOF文件的fsync策略,每秒同步一次。

- **no-appendfsync-on-rewrite no**:在AOF重写期间,是否在每次写入后调用fsync。

- **auto-aof-rewrite-percentage 100** 和 **auto-aof-rewrite-min-size 64mb**:自动AOF重写的条件,基于文件大小增长百分比和最小文件大小。

- **aof-load-truncated yes**:如果AOF文件结尾损坏,启动时是否加载这个文件。

- **aof-use-rdb-preamble yes**:AOF文件是否以RDB格式开始,这使得AOF文件可以兼容RDB的加载方式。

- **lua-time-limit 5000**:Lua脚本的最大执行时间(毫秒)。

- **slowlog-log-slower-than 10000**:定义什么是慢查询(微秒),超过此时间的查询将被记录。

- **slowlog-max-len 128**:慢查询日志的最大长度。

- **latency-monitor-threshold 0**:延迟监控阈值(毫秒),0表示用。

- **notify-keyspace-events ""**:键空间通知的事件类型,空字符串表示不通知。

- **hash-max-ziplist-entries 512** 和 **hash-max-ziplist-value 64**:哈希数据结构使用ziplist的阈值。

- **list-max-plist-size -2** 和 **list-compress-depth 0**:列表数据结构的配置,影响列表的存储和压缩方式。

- **set-max-intset-entries 512**:集合数据结构使用intset的阈值。

- **zset-maxziplist-entries 128** 和 **zset-max-ziplist-value 64**:有序集合使用ziplist的阈值。

- **hll-sp-max-bytes 3000**:HyperLogLog稀疏表示的最大字节数。

- **stream-node-max-bytes 4096** 和 **stream-node-max-entries 100**:流数据结构的节点大小限制。

- **activerehashing yes**:是否启用主动rehashing。

- **client-output-buffer-limit**:不同类型客户端(普通、副本、发布订阅)的输出缓冲区限制。

- **hz 10**:Redis调用内部函数检查空闲连接和执行其他周期性操作的频率。

- **dynamic-hz yes**:是否动态调整hz值,根据客户端连接的活跃度。

- **aof-rewrite-incremental-fsync yes**:在AOF重写时,是否增量调用fsync。

- **rdb-save-incremental-fsync yes**:在RDB保存时,是否增量调用fsync。

- **jemalloc-bg-thread yes**:是否使用jemalloc后台线程来管理内存,这有助于减少内存碎片和提高性能。

Jedis是Redis官方推荐的Java连接开发工具!
虽然现在的SpringBoot2.×版本已经将Jedis换成了Lettuce
行家有木有!出手就知道啊!
Redis配置对大小写不敏感!

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。
在Redis集群中我们讲到了,主机断开后,我们得手动设置另一个从机变成主机!这是不智能的!在实际工作中,我们都是用哨兵模式来自动切换主机。通俗点讲,就是自己去选择‘大哥’!
哨兵集群,基于主从复制模式 ,所有的主从配置优点,它全有
户需要查询一个数据,但是redis中没有(比如说mysql中id=-1的数),直接去请求MySQL

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mybatis 之批量处理
  • OpenResty使用Lua笔记
  • 题解|2023暑期杭电多校02
  • 关键路径-matlab
  • 【BUG】已解决:IndexError: list index out of range
  • 今日科技圈最新时事新闻(2024年7月12日
  • C++——类和对象(下)
  • k8s入门:从安装到实际应用
  • 【Linux杂货铺】期末总结篇3:用户账户管理命令 | 组账户管理命令
  • redis-缓存三剑客
  • FreeRTOS的中断管理、临界资源保护、任务调度
  • 2024CAIP省赛
  • 【吊打面试官系列-ZooKeeper面试题】简述 Zookeeper 文件系统?
  • 安全运营概述
  • 【学习】美国虚拟信用卡申请流程
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • ECMAScript入门(七)--Module语法
  • gulp 教程
  • Hibernate最全面试题
  • Laravel 中的一个后期静态绑定
  • Python 反序列化安全问题(二)
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Spring核心 Bean的高级装配
  • 安装python包到指定虚拟环境
  • 马上搞懂 GeoJSON
  • 排序算法学习笔记
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何进阶一名有竞争力的程序员?
  • 深度学习入门:10门免费线上课程推荐
  • 小程序开发之路(一)
  • 优化 Vue 项目编译文件大小
  • 栈实现走出迷宫(C++)
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #php的pecl工具#
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (ZT)薛涌:谈贫说富
  • (办公)springboot配置aop处理请求.
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)opengl函数加载和错误处理
  • (一)插入排序
  • ***监测系统的构建(chkrootkit )
  • ./configure,make,make install的作用
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET CF命令行调试器MDbg入门(一)
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @软考考生,这份软考高分攻略你须知道
  • []我的函数库