redis学习总结

本文深入讲解Redis的常用命令与数据结构,包括字符串、列表、哈希、集合、有序集合及地理空间存储。探讨了内存管理、RDB和AOF持久化机制,主从复制与哨兵高可用方案,以及管道技术和数据淘汰策略。

1.redis常用命令和数据结构

1.1 redis常用命令

  • randomkey:返回随机key  
  • type key:返回key存储的类型
  • exists key:判断某个key是否存在
  • del key:删除key
  • rename key newkey:改名
  • renamenx key newkey:如果newkey不存在则修改成功
  • move key 1:将key移动到1数据库
  • ttl key:查询key的生命周期(秒)
  • expire key 整数值:设置key的生命周期以秒为单位
  • pexpire key 整数值:设置key的生命周期以毫秒为单位
  • pttl key:查询key 的生命周期(毫秒)
  • perisist key:把指定key设置为永久有效

1.2 redis数据结构

1.2.1 字符串(String)

字符串类型是其他几种的基础,值可以是字符串(简单,复杂的json,xml),数字(整型,浮点),二进制(图片,音频,视频),最大值不能超过512MB。

1.2.2 列表(List)

一个列表结构可以有序地存储多个字符串。

1.2.3 哈希(hash)

散列可以存储多个键 值 对之间的映射,散列存储的值既可以是字符串又可以是数字值。

1.2.4 集合(Set)

集合和列表都可以存储多个字符串,它们之间的不同在于,列表可以存储多个相同的字符串,而集合则通过使用散列表(hashtable)来保证自已存储的每个字符串都是各不相同的(这些散列表只有键,但没有与键相关联的值),redis中的集合是无序的。

1.2.5 有序集合(zset)

 有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member),每个成员都是各不相同的。有序集合的值则被称为分值(score),分值必须为浮点数。

1.2.6 GEO(功能在Redis3.2)

存储地理空间位置(纬度、经度、名称)

2.redis内存管理

 

3.redis持久化机制

3.1 RDB

RDB持久化是把当前进程数据生成快照保存到硬盘的过程。

RDB是一个紧凑压缩的二进制文件,代表Redis在某一个时间点上的数据快照。非常适合用于备份,全量复制等场景。比如每6小时执行bgsave备份,并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。
Redis加载RDB恢复数据远远快于AOF方式。

3.2 AOF

AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。

4.redis主从复制和哨兵高可用机制

 

redis主从复制的特点:

  • 一个Master可以有多个slave主机,支持链式复制;
  • Master以非阻塞方式同步数据至slave主机;

复制的两种方式:

新的从节点或某较长时间未能与主节点进行同步的从节点重新与主节点通信,需要做“full synchronization”,此时其同步方式有两种方式:

  • Disk-backend:主节点基于内存创建快照文件于磁盘中,而后将其发送给从节点;从节点收到快照进行恢复,快照恢复完后接着快照的那一刻随后内容进行复制,主节点每写一行,并直接将语句发送给从节点(跨网络复制适合)
  • Diskless:主节占新创建快照后直接通过网络套接字文件发送给从节点;为了实现并行复制,通常需要在复制启动前延迟一个时间段;(占用网络带宽)

哨兵机制是为了解决主从复制的缺点的:

主从复制高可能问题:

(1)如果主节点出现问题,需手工解决问题,也就是重启master或手工选择一个slave,使用slaveof no one命令或slaveof new master命令选出主和从。需要单独写脚本处理。问题是如何判断节点故障,如何将命令发送给节点

(2)写能力和存储能力受限,写只在一个节点

sentinal哨兵: redis集群架构中重要的组件,主要功能如下

①集群监控,负责监控redis master和slave进程是否正常工作

②消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

③故障转移,如果master node挂掉了,会自动转移到slave node上

④配置中心,如果故障转移发生了,通知client客户端新的master地址

哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作

①故障转移时,判断一个master node是宕机了,需要大部分的哨兵都同意才行,涉及分布式选举的问题

②即使部分哨兵节点挂掉了,哨兵集群还能正常工作,如果只有一个哨兵,不合理。

5.管道

Pipeline指的是管道技术,指的是客户端允许将多个请求依次发给服务器,过程中而不需要等待请求的回复,在最后再一并读取结果即可。

6种数据淘汰策略

1、volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

2、volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

3、volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

4、allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

5、allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

6、no-enviction(驱逐):禁止驱逐数据

先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值