Redis

一.  什么是Redis?


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

二.  redis下载与安装

官网链接icon-default.png?t=M7J4http://[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

将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“
  • 删除:del key
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“
  • 删除:HDEL key field
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
  • 获取: lrange 
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"
  • 删除:lrem
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"
  • 删除: srem
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
  • 删除:zrem
192.168.25.153:6379> zrem zset1 a

(integer) 1
  • 获取:zrange && zrevrange
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 总结  

数据类型赋值取值删除特点
stringset k vget kdel k二进制安全
hashhset k k vhget k k hdelk  k集合数组无序唯一
listlpush&&rpush k v...lrange k 0 -1(取出所有) lrem k -2 v集合数组
setsadd k v...smembers k srem k v无序且唯一
zsetzadd k 12 v...zrange(分数从小到大)&&zrevrange(分数从大到小) k 0 -1 withscoreszrem k v排序和隐藏分数

五. 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

注意:主死了,从只能读 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值