Redis基础知识


之前有用到过redis,但是从来没有系统整理过关于redis的东西,紧要关头了还得重新回顾一遍。


Redis是NoSQL,是一种基于key-value的非关系型数据库。由C语言编写(所以想用得安装GCC)。

Redis的相关配置通过redis.conf进行设置,不同的系统存在不同的位置,我使用的是deepin,存储在/etc/redis中

Redis特征

Redis是远程的,有客户端和服务端两部分,可以部署于不同的机器上,通过redis自定义的协议进行交互,通常所指是redis服务端。

Redis可以是基于内存的,存储于内存代表了高速的操作能力,性能高于MySQL,但是比较吃内存,当然也有硬盘持久化机制。

Redis持久化

Redis持久化有RDB和AOF两种方式,也可以不使用持久化,或同时使用RDB和AOF

     1. RDB

RDB的优势在于:只包含一个文件,容易备份容易恢复;当数据集很大时,启动效率要比AOF高

RDB的劣势在于:不能保证数据的高可用性,可能在数据持久化前宕机导致数据丢失;而且是由子进程协助完成数据持久化,数据集大的时候可能会有秒级的停机。

RDB的配置:Redis默认的配置就是RDB,在redis.conf中可以找到相关的信息,其中有三段save,如第一段表示每900秒有一次修改操作就会执行一次持久化

Redis基础知识_第1张图片

我们可以在dir表示的路径中找到持久化后对应的数据库文件。

Redis基础知识_第2张图片

 

     2. AOF

AOF的优势在于:能够带来更高的数据安全性;通过日志保存修改操作;日志使用的是append追加方式,宕机也不会破坏log。

AOF的劣势在于:相同数量数据集,AOF文件相比于RDB更大,运行效率比RDB低。

AOF的配置:默认为RDB,我们想配置成AOF需要去redis.conf中修改appendonly的no,将其改为yes。此时相关log会存放在appendonly.aof中,可以打开看一下,里面就是相关操作的执行顺序。

Redis基础知识_第3张图片

AOF有三种同步方式:每秒一次、每修改一次、不同步

Redis基础知识_第4张图片

always表示每修改一次就同步一次,这种方式保证数据可靠性,但是操作次数可能比较多,影响效率。

everysec表示每秒同步一次,但是同步间可能有宕机情况。no就是不同步。

#代表注释,根据需求修改就可以

Redis事务

Redis事务包括multi、exec、discard三个操作。

multi表示开启一个事务,执行后下面的操作包含在一个事务中。

exec提交一次事务,执行其中所有命令。

discard表示回滚一次事务。

Redis应用场景

什么地方会用到redis,我们可以举个例子,客户端请求数据,服务端需要返回相应数据必须去找相关数据,去哪里找呢,之前是存储于服务器本地,后来由于数据量的增多单独分出一个数据库服务器比如MySQL服务器,再后来随着网络的发展和普及,网民越来越多,流量越来越大,相关请求越来越快,数据库表示我的读写次数有点跟不上了,这时候有人就想到了用缓存来缓解压力,将用户请求数据放到缓存来减少对数据库服务器的请求,这就是缓存的由来,缓存谁来做呢,Redis来做,因为Redis的读比写快,并且效率高。

上面是redis最典型的应用场景:缓存。当然redis不仅仅能够作为网络缓存来用。也可以将Redis作为任务队列,使用其中的数据结构list,保证原子操作的队列,比如用于秒杀抢购。还可以做应用排行榜、应用统计之类的。有老师说可以用于分布式集群架构的session分离,这个我现在还不懂o(╯□╰)o

Redis相关配置

deepin系统直接通过 sudo apt-get install redis-server 安装Redis服务器端。

通过ps -aux | grep redis 可以看到redis进程。

redis默认没有密码,可以去redis.conf中大概36%左右找到requirepass 后面跟上想要设置的密码就可以。

通过netstat可以看到redis默认端口号是6379。端口号可以去redis.conf找到port进行修改。

Redis基础知识_第5张图片

这个地方有个daemonize,yes表示后台执行,no表示前台执行。

Redis一个实例可以提供16个数据库,这个在redis.conf中可以找到database 16。在使用Redis时可以通过select关键字切换16个数据库,比如: select 1 是切换到序号1的数据库,可以选择[0-15]之间的数字,对应不同数据库。

可以通过 move key num 命令将本数据库中的key移动到num号数据库中。

Redis最大的优势就是基于内存,这也是使用Redis的最佳使用方式。大多数场景是用于缓存,在某些方面优于memcached。Redis能够支持数据高并发读写、支持对海量数据的高效率存储和访问、具有对数据的高可扩展性和高可用性。

 

 

参考资料:

1. https://www.cnblogs.com/zongfa/p/7808807.html

2. https://www.cnblogs.com/yuhangwang/p/5817930.html 

 


记录每天解决的小问题,积累起来去解决大问题。

你可能感兴趣的:(redis,数据库)