Redis(remote dictionary server,远程字典服务)是一个开源的使用ANSI C语言编写、遵守BSD协议,支持网络,可基于内存可持久化的日志型、key-Value的数据库,并提供多种语言的API。它通常被称为结构服务器,因为值(value)可以是字符串(string),哈希(hash),列表(list),集合(sets)和有序集合(sorted sets)等类型。Redis是完全开源免费的,是一个高性能的key-value数据库。
Redis 是一个高性能的key-value数据库。,redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用 。Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
Redis 作为基于内存运行的数据库, 缓存是其最常应用的场景之一, 除此之外, Redis
常见应用场景还包括: 获取最新 N 个数据的操作、 排行榜类应用、 计数器应用、 存储关系、
实时分析系统、 日志记录。
速度快,因为数据存在内存中。Redis读的数度是110000次/s,写的数度是81000次/s
可用于缓存消息,按key设置过期时间,过期后将会自动删除
丰富的数据类型,redis支持二进制案例的strings,lists,hashes,sets以及ordered sets数据类型操作
持久化数据,可存储对象
支持数据备份、队列、分布式
原子性
缺点: 数据容量收到物理内存的限制,不能用于海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上
VMware软件,一台centos7虚拟机(192.168.48.128)
官方下载redis软件包,地址:https://redis.io/
[root@localhost ~]# yum install gcc gcc-c++ make -y
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.0.107/share /abc
[root@localhost ~]# cd /abc
[root@localhost abc]# tar zvxf redis-5.0.7.tar.gz -C /opt
( 因为解压的软件中的配置脚本已经被封装化了,所以直接make )
[root@localhost abc]# cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]# make
[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install
[root@redis redis-5.0.7]# cd /usr/local/redis/
[root@redis redis]# ls
bin
[root@redis redis]# cd bin/
[root@redis bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@redis bin]# cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh
[root@localhost utils]# cd /etc/redis
[root@localhost redis]# ls
6379.conf
[root@localhost redis]# ln -s /usr/local/redis/bin/* /usr/local/bin
[root@localhost redis]# netstat -ntap | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 8761/redis-server 1
[root@localhost redis]# vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.48.128 ‘70行,添加本地地址’
[root@localhost redis]# /etc/init.d/redis_6379 restart ‘启动服务’
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@localhost redis]# redis-cli -h 192.168.48.128 -p 6379 ‘成功登录’
192.168.48.128:6379>exit ‘退出’
[root@localhost redis]# redis-benchmark -h 192.168.48.128 -p 6379 -c 100 -n 100000
[root@redis utils]# redis-cli -h 192.168.48.128 -p 6379
192.168.48.128:6379> help set '查看set命令帮助'
SET key value [expiration EX seconds|PX milliseconds] [NX|XX] 'set命令的格式'
summary: Set the string value of a key
since: 1.0.0
group: string
192.168.48.128:6379> set username ab '创建键值对(键名:username,值名:ab)'
OK
192.168.48.128:6379> set name ab '创建键值对(键名:name,值名:ab)'
OK
192.168.48.128:6379> KEYS * '查看所有键'
1) "username"
2) "name"
192.168.48.128:6379> keys n??? '查看n开头且占4个字节的key'
1) "name"
192.168.48.128:6379> get name '查看name键的值'
"ab"
192.168.48.128:6379> EXISTS name '查看name是否存在'
(integer) 1
192.168.48.128:6379> del name '删除name键'
(integer) 1
192.168.48.128:6379> keys *
1) "username" '删除成功'
192.168.48.128:6379> rename username user '将username键重命名为user'
OK
192.168.48.128:6379> keys *
1) "user" '重命名成功'
192.168.48.128:6379> exit
( 返回值:移动成功返回 1 ,失败则返回 0 )
[root@redis utils]# redis-cli -h 192.168.48.128 -p 6379 '连接数据库'
192.168.48.128:6379> keys * '默认进入第一个库0'
1) "mylist"
2) "myset:__rand_int__"
3) "counter:__rand_int__"
4) key:__rand_int__"
5) "user"
192.168.48.128:6379> select 11 '切换至序号为11的数据库'
OK
192.168.48.128:6379[11]> keys * '查看所有键'
(empty list or set)
192.168.48.128:6379[11]> select 0 '切换至序号为0的数据库'
OK
192.168.48.128:6379> move user 11 '将user键值对移动到第11个库'
(integer) 1
192.168.48.128:6379> select 11 '切换至序号为11的数据库'
OK
192.168.48.128:6379[11]> keys * '查看所有键'
1) "user"
192.168.48.128:6379[11]> get user '查看键值'
"ab"
192.168.48.128:6379[11]> flushdb '清空库'‘(生产环境下一般不建议使用)’
OK
192.168.48.128:6379[11]> keys *
(empty list or set)
192.168.48.128:6379[11]> exit '退出'
Redis是运行在内存中,内存中的数据断电丢失。为了能后重用Redis数据,或者防止系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化。
RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本
AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化
RDB持久化是redis默认的持久化方式,默认文件名为dump.rdb
适合大规模的数据恢复;
如果业务对数据完整性和一致性要求不高,RDB是很好的选择;
备份时占用内存。
将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可
[root@redis 6379]# vim /etc/redis/6379.conf '修改配置文件'
AOF是一个redo log(重做日志),Redis 默认是不开启AOF的;为了弥补 RDB 的不足(数据的不一致性);采用日志的形式来记录每个写操作,并追加到文件中;Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
将appendonly.aof文件拷贝到redis安装目录的bin目录下,重启redis服务即可
AOF的工作原理是将写的操作追加到文件中,这会导致文件中的冗余会越来越多;
当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩。
Redis 会fork 出一条新进程,读取内存中的数据(并没有读取旧文件),并重写到一个临时文件中,最后替换旧的aof文件。
[root@localhost redis]# vim /etc/redis/6379.conf