redis基础
一、五大数据类型
1、Redis键(key)
①、首先创建一些 key,并赋上对应值:
1 2 3 4 5 6 | redis 127.0.0.1:6379> SET w3c1 redis OK redis 127.0.0.1:6379> SET w3c2 mysql OK redis 127.0.0.1:6379> SET w3c3 mongodb OK |
②、查找以 w3c 为开头的 key:
1 2 3 4 | redis 127.0.0.1:6379> KEYS w3c* 1) "w3c3" 2) "w3c1" 3) "w3c2" |
③、获取 redis 中所有的 key 可用使用 *。
1 2 3 4 | redis 127.0.0.1:6379> KEYS * 1) "w3c3" 2) "w3c1" 3) "w3c2" |
2、Redis字符串(String)
单值单value
3、Redis列表(list)
单值多value
4、Redis集合(Set)
单值多value
5、Redis哈希(Hash)
KV模式不变,但V是一个键值对
6、 有序集合(sorted Zset)
二、数据持久化
2.1、RDB快照(snapshot)
默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中
1、自动生成快照:例子:设置Redis在满足"60秒内有至少10000个键被改动"这一条件时,自动保存一次数据集:
save 60 10000
1 2 3 4 | vi redis.conf内添加 save 900 1 save 300 10 save 60 10000 //60s内对redis的操作10000次,就会把内存写入到dump.rdb文件中 |
dbfilename:指明rdb名称
dir:声明rdb的目录
2、手动生成快照,直接执行save或者bgsave即可
RDB的两种生成snapshot的方法:save和bgsave
区别:save阻塞客户端命令,bgsave不会阻塞客户端命令
配置自动生产rdb文件后台使用的默认是bgsave方式
2.2、AOF(append-only file)
快照功能并不是非常耐久:如果Redis因为某些原因而造成故障停机,那么服务器将丢失最近写入、且仍未保存到快照中的那些数据
快照功能并不是非常耐久(durable):如果Redis因为某些原因而造成故障停机,那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。从1.1版本开始, Redis增加了一种完全耐久的持久化方式:AOF持久化,将修改的每一条指令记录进文件appendonly. aof中(先写入os cache,每隔一段时间fsync到磁盘)
你可以通过修改配置文件来打开AOF功能:
1 | 1#appendonly yes |
appendonly yes:开启AOF
appendfilename "appendonly.aof":策略
原理:直接通过执行aof里面的操作命令集进行恢复
缺点:速度慢,要恢复的执行语句太多
从现在开始,每当Redis执行一个改变数据集的命令时(比如SET),这个命令就会被追加到AOF文件的末尾。
这样的话,当Redis重新启动时,程序就可以通过重新执行AOF文件中的命令来达到重建数据集的目的。你可以配置Redis多久才将数据fsync到磁盘一次。
有三个选项:
1 2 3 | 1 appendfsync always:每次有新命令追加到AOF文件时就执行一次fsync,非常慢,也非常安全。 2 appendfsync everysec:每秒fsync一次,足够快,并且在故障时只会丢失1秒钟的数据。 3 appendfsync no:从不fsync,将数据交给操作系统来处理。更快,也更不安全的选择。 |
推荐(并且也是默认)的措施为每秒fsync一次,这种fsync策略可以兼顾速度和安全性。
2.3、AOF重写
AOF文件里可能有太多没用的指令,所以AOF会定期根据内存的最新数据生成aof文件,
例如执行了如下几条命令:
三、
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构