Redis官网:https://redis.io
Redis是完全开源免费的,遵守BSD协议.
Redis是一个高性能的key-value
数据库.
Redis具有以下特点
- 支持数据持久化,可将内存中的数据保存至磁盘,重启后可以再次加载进行使用.
- 支持五种数据类型.
- 支持数据库备份.
Redis的优势
- 性能极高,读110000次/s,写81000次/s.
- 丰富的数据类型,String、Lists、Hashes、Sets以及Ordered Sets.
- 所有操作都是原子性的,意思是要么成功执行要么完全失败不执行,多个操作支持事物,即MULTI和EXEC指令包起来.
- 丰富的特性,支持publish/subscribe、通知、key过期等特性.
Redis数据类型
·
1.String 字符串
redis的string可以包含任何数据类型,包括图片以及序列化的对象.
一个键最大能存储512MB.
·
2.Hash 哈希
redis的hash是一个string类型的key和value映射表.
hash特别适合存储对象,类比Python中的字典.
·
3.List 列表
redis的list是简单的字符串列表,按照插入顺序排序.
可以从两端进行添加,类似于双向链表,还可以进行阻塞.
·
4.Set 集合
redis的set是字符串类型的集合,无序且不重复.
集合是通过哈希表实现的,所以增删查的时间复杂度都是O(1).
·
5.Zset 有序集合
redis的zset和set基本一样,不同的是zset每个元素都会关联一个double类型的分数.
redis正是通过对这个分数的排序来实现集合的有序存储.
安装
进入官网,下载Redis:
下载完成后,按如下步骤安装
·
1.进入redis所在文件夹,输入命令将其解压到/usr/local
目录下:tar zxf redis-5.0.2.tar.gz -C /usr/local
·
2.进入解压后的文件夹,开始编译安装:make && sudo make install
·
3.启动redis:redis-server &
关闭Redis
redis-cli shutdown
如果无法正常关闭,可使用
kill
命令:扫描二维码关注公众号,回复: 4252825 查看本文章# 获取最后一次启动的redis实例的PID redisPID=`ps -ef | grep redis | awk 'NR==1{print $2}'` # 杀死redis进程,-9表示强制 kill -9 $redisPID
配置
1.安装完毕后,在redis目录下新建3个文件夹:
mkdir bin etc db
·
2. 把/usr/local/redis/src目录下的如下4个文件cp到/usr/local/redis/bin目录下:cd /usr/local/redis/src # -p表示复制权限 cp -p mkreleasehdr.sh redis-benchmark redis-check-rdb redis-cli redis-server ../bin/
·
3. 将/usr/local/redis目录下的redis.conf
文件拷贝到/usr/local/redis/etc目录下:cd /usr/local/redis cp -p redis.conf etc/
·
4.如下,修改配置文件/usr/local/redis/etc/redis.conf:vim /usr/local/redis/etc/redis.conf
关于
vim
编辑器的用法,百度一下.
也可通过redis-cli
命令进入交互模式进行配置,详见文章结尾.
配置文件 redis.conf
·
修改为守护模式
daemonize yes
·
设置进程锁文件
pidfile /usr/local/redis/redis.pid
·
指定端口
port 6379
·
修改可连接的网断
bind 127.0.0.1
·
修改客户端超时时间
timeout 300
·
修改日志级别
loglevel debug
·
指定日志文件位置
logfile /usr/local/redis/log-redis.log
·
设置数据库的数量,可以使用SELECT 命令在连接上指定数据库id
databases 16
·
指定本地数据库文件名
dbfilename dump.rdb
·
指定本地数据库路径
dir /usr/local/redis/db/
指定存储至本地数据库时是否压缩数据
rdbcompression yes
·
默认为yes,redis采用LZF压缩
如果为了节省CPU时间,可以注释掉该选项,但会导致数据库文件变的巨大
指定在多长时间内,有多少次更新操作才将数据同步到数据文件
redis默认提供了3个条件:
save 900 1
save 300 10
save 60 10000
·
还可以多个条件配合
save < seconds> <changes>
指定是否在每次更新操作后进行日志记录
appendonly no
·
redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失
因为 redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中
指定更新日志条件,
appendfsync everyses
·
此配置有3个可选值:
no
:等待操作系统进行数据缓存同步到磁盘(快)
always
:每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec
:每秒同步一次(折衷,默认值)
最后,启动服务:
redis-server /usr/local/redis/etc/redis.conf
·
进入交互模式:# -h:指定redis主机IP -p:指定服务端口 redis-cli -h 127.0.0.1 -p 6379
·
交互模式中的操作:# 获取所有配置项 reids 127.0.0.1:6379> config get * # 获取单个配置项:config get 配置名 redis 127.0.0.1:6379> config get loglevel # 编辑配置:config set 配置名 "新的参数" redis 127.0.0.1:6379> config set loglevel "debug"