潍坊市论坛

首页 » 分类 » 问答 » Redis全面入门
TUhjnbcbe - 2021/8/18 18:56:00

概念

首先看下官方的介绍:

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高级话题,比如集群、哨兵、监控等相关内容。

如果觉得文章有用,

1
查看完整版本: Redis全面入门