概念
首先看下官方的介绍:
Redisisanopensource(BSDlicensed),in-memorydatastructurestore,usedasadatabase,cache,andmessagebroker.
Redis是一种开源的内存数据结构存储,被用来作为数据库、缓存以及消息队列。
数据结构
String
List:字符串集合,基于链表实现
Set:唯一、无序的字符串集合
SortedSet:和Set类似,但是每个字符串会关联一个浮点的分数,用来获取top10类似的数据
Hash:hashMap,key-value键值对,kv都是字符串类型
bitarrays:可用来处理类似二进制为的字符串,比如计数1,重置为0等。
HyperLogLogs
Streams:尽可以追加的类似于map的数据机构,日志类型数据的抽象。
前5种,是必须要掌握的。
基本命令
1.String相关
#查看所有的keykeys*#获取key的值getkey#设置key的值setkeyvalue#设置key的过期时间expirekey20#查看key剩余时间ttlkey#flushall#删除keydelkey
2.List相关
lpush/rpushlrangestartendlrange0-1-1:最后一个lpoprpop
3.Set基本命令
saddkeyvaluesmemberskey
4.SortedSet基本命令
zaddkey分数valuezaddss70zhangsan80lisizrangestartend
5.Hash基本命令
hsetkeyfiledvaluehgetkeyfiledhgetallkeyhdelkeyfiled
持久化
为了实现高性能Redis使用内存数据集操作,但考虑到数据的安全,Redis提供了持久化操作。支持两种类型的持久化,分别是AOF和RDB。
下面分别介绍两种持久化方式:
1.RDB
快照方式持久化,也是redis默认方式,只产生一个dump.rdb文件,定时刷盘,性能较好,但是会面临数据丢失风险!
具体工作方式:
1.fork子进程
2.将内存数据集写到一个临时文件
3.写完替换旧的文件(copy-on-write)
配置方式:
#基于copy-on-write,当需要生成快照时,fork一个新进程,新进程生成一个新的dump.rdb文件,完成后替换老的#自动配置:60秒内至少有个key发生了变化,才会触发一次快照save60#手动方式save/bgsave
2.AOF
Append-Only-File,以文件日志的方式记录所有的变更操作(增删改),专门的持久化线程来读取日志进行持久化。
具体工作方式:
fork一个子进程child
child写入一个新的临时的aof文件
parent在内存里记录写操作日志,同时也往老的文件写(保证如果child失败了,数据是安全的)
child合并写完后,通知parent将内存记录追加到child生成的文件中
老文件替换新文件(copy-on-write)
配置方式:
#打开方式appendonlyyes#日志记录频率#性能最差,最安全,保证数据不丢appendfsyncalways#可能丢失一秒的数据(推荐)appendfsynceveryse#最快也最不安全,由操作系统来刷盘,频率在30-40秒appendfsyncno
文章结束,后续会更新Redis高级话题,比如集群、哨兵、监控等相关内容。
如果觉得文章有用,