Redis

一.  什么是Redis


Redis是用C语言开发的一个开源的性能键值对(key-value)数据库。redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中。

二.  redis下载与安装

官网链接

icon-default.png?t=M7J4

http://[http://download.redis.io/releases/redis-3.0.0.tar.gz](http://download.redis.io/releases/redis-3.0.0.tar.gz)

2.1 安装redis(linux系统)

  • 准备

Redis是c语言开发的。安装redis需要c语言的环境。

yum install gcc-c++ 

将redis-3.0.0.tar.gz拷贝到/usr/upload下解压源码

tar -zxvf redis-3.0.0.tar.gz

  • 进入解压后的目录进行编译

cd /usr/upload/redis-3.0.0

make

  •  安装到指定目录

make install PREFIX=/usr/local/redis

2.2  启动和关闭redis(我们以守护模式启动)

第一步:进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径

cp /usr/upload/redis-3.0.0/redis.conf  /usr/local/redis/bin

第二步:修改/usr/java/redis/bin下的redis.conf,将daemonize由no改为yes

 第三步:启动

./redis-server redis.conf

第四步:关闭

到redis/bin目录下执行如下命令

./redis-cli -p 端口号 shutdown  

三.  redis的基本命令

  • redis-cli连上redis服务后,可以在命令行发送命令:

./redis-cli -h 127.0.0.1 -p 6379

  •  常用命令
  1. setget:使用set和get可以向redis设置数据、获取数据
  2. keys *:查看当前库中所有的key值
  3. exists:判断key值是否存在
  4. expirettl:expire设置key的过期时间,ttl查看key的有效期
  5. incrdecr:自增和自减
  6. select:选择0-15中的其中一个数据库
  7. clear:可以使用clear命令对redis-cli终端屏幕清屏。
  8. FLUSHALL:清空所有数据库的所有数据

  9. FLUSHDB: 清空当前所在数据库的数据

 四.  redis五种数据类型

 4.1 string: key-value

  • 赋值:set key value
127.0.0.1:6379> set test 123

OK
  • 取值:get key
127.0.0.1:6379> get test

"123“
127.0.0.1:6379>del test

(integer) 1
  • 自增自减:incr key decr key
127.0.0.1:6379> incr num
(integer) 1

127.0.0.1:6379> incr num
(integer) 2

127.0.0.1:6379> incr num
(integer) 3

 4.2 hash: key-field-value( key: map )

  • 赋值:HSET key field value
127.0.0.1:6379> hset user name zhangsan
(integer) 1
  • 取值:HGET key field
127.0.0.1:6379> hget user name
"zhangsan“
127.0.0.1:6379> hdel user name
(integer) 1

 4.3 list: 有顺序可重复,内部是使用双向链表实现的

  • 赋值:lpush || rpush
192.168.25.153:6379> lpush list a b c d

(integer) 4
192.168.25.153:6379> rpush list 1 2 3 4

(integer) 8
192.168.25.153:6379> lrange list 0 -1

1) "d"

2) "c"

3) "b"

4) "a"

5) "1"

6) "2"

7) "3"

8) "4"
192.168.25.153:6379> lrem list 0 d 

(integer) 1
192.168.25.153:6379> lrange list1 0 -1

1) "c"

2) "b"

3) "a"

4) "1"

5) "2"

6) "3"

7) "4"

 4.4 set: 元素无顺序,不能重复

  • 赋值:sadd
192.168.25.153:6379> sadd set1 a b c c c d

(integer) 4
  • 取值; smembers
192.168.25.153:6379> smembers set1

1) "b"

2) "c"

3) "d"

4) "a"
192.168.25.153:6379> srem set1 a

(integer) 1
192.168.25.153:6379> smembers set1

1) "b"

2) "c"

3) "d"

 4.5 zset: 有顺序,不能重复 

  • 赋值:zadd
192.168.25.153:6379> zadd zset1 2 a 5 b 1 c 6 d

(integer) 4
192.168.25.153:6379> zrem zset1 a

(integer) 1
192.168.25.153:6379> zrange zset1 0 -1

1) "c"

2) "b"

3) "d"

192.168.25.153:6379> zrevrange zset1 0 -1

1) "d"

2) "b"

3) "c"
192.168.25.153:6379> zrange zset1 0 -1 withscores

1) "c"

2) "1"

3) "b"

4) "5"

5) "d"

6) "6"

192.168.25.153:6379> zrevrange zset1 0 -1 withscores

1) "d"

2) "6"

3) "b"

4) "5"

5) "c"

6) "1"

4.6 总结  

数据类型 赋值 取值 删除 特点
string set get del 二进制安全
hash hset hget hdel 集合数组无序唯一
list lpush&&rpush lrange mylist 0 -1(取出所有) lrem 集合数组
set sadd smembers srem 无序且唯一
zset zadd zrange(分数从小到大)&&zrevrange(分数从大到小) zrem 排序和隐藏分数

五. redis持久化

https://redis.io/topics/persistence

      Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。

      Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合用。  

5.1 RDB【Redis DataBase】(数据)

5.1.1 RDB概述

      RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis自动内存中的数据进行快照并持久化到硬盘。

     RDB是Redis认采用的持久化方式,在redis.conf配置文件认有此下配置:

save 900 1  #900秒内容如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000 #表示60秒内如果超过10000个key被修改,则发起快照保存

在redis.conf中:  

        配置dir指定rdb快照文件的位置

        配置dbfilenam指定rdb快照文件名称

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。

5.1.2 总结

  • 优点:让redis的数据存取速度变快
  • 缺点:服务器断电时会丢失部分数据(数据的完整性得不到保证)

5.2 AOF(append only file )(命令)

5.2.1 AOF概述

        以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件        

  • 认情况下Redis没有开启AOF(append onlyfile)方式的持久化,可以通过appendonly参数开启:
appendonly yes
  •  AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,认的文件名是appendonly.aof,可以通过appendfilename参数修改
appendfilename appendonly.aof
  • AOF持久化策略如下:
#appendfsync always   #每次有数据修改发生时都会写入AOF文件
appendfsync everysec  #每秒钟同步一次,该策略为AOF的缺省策略。
#appendfsync no        #从不同步。高效但是数据不会被持久化。

5.2.2 总结

  • 优点:持久化良好,能包证数据的完整性
  • 缺点:大大降低了redis系统的存取速度

六. redis主从复制

6.1 什么是主从复制

        持久化保证了即使redis服务重启也会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

说明:

  • 主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。

  • 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

  • 只有一个主redis,可以有多个从redis

  • 主从复制不会阻塞master,在同步数据时,master可以继续处理client 请求

  • 一个redis可以即是主又是从,如下图:

 

 6.2 主从配置(linux系统)

  • 主redis配置--无需配置

  • 从redis配置

修改从redis服务器上的redis.conf文件添加slaveof 主redis ip 主redis端口

 

上边的配置说明当前该从redis服务器所对应的主redis是192.168.101.3,端口是6379

6.3 主从复制过程

复制过程说明:

1、slave 服务启动,slave 会建立和master 的连接,发送sync 命令。

2、master启动一个后台进程将数据库快照保存到RDB文件

3、master 就发送RDB文件给slave

4、slave 将文件保存到磁盘上,然后加载到内存恢复

5、master把缓存的命令转发给slave

注意:主死了,从只能读 

 

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...