之前有用到过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秒有一次修改操作就会执行一次持久化
我们可以在dir表示的路径中找到持久化后对应的数据库文件。
2. AOF
AOF的优势在于:能够带来更高的数据安全性;通过日志保存修改操作;日志使用的是append追加方式,宕机也不会破坏log。
AOF的劣势在于:相同数量数据集,AOF文件相比于RDB更大,运行效率比RDB低。
AOF的配置:默认为RDB,我们想配置成AOF需要去redis.conf中修改appendonly的no,将其改为yes。此时相关log会存放在appendonly.aof中,可以打开看一下,里面就是相关操作的执行顺序。
AOF有三种同步方式:每秒一次、每修改一次、不同步
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进行修改。
这个地方有个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
记录每天解决的小问题,积累起来去解决大问题。