文章目录

  • 架构图
  • 安装Redis服务
  • Redis的常用命令
  • string 是最简单的类型
  • hash 是一个 string 类型的 field(字段)和 value 的映射表
  • list 是一个链表结构,主要功能是 push、pop、获取一个范围内的所有值等等
  • set 是集合,他是 string 类型的无序集合。
  • zset 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。
  • Redis半持久化RDB
  • Redis全持久化AOF
  • Redis主从复制读写分离


架构图

linux主机redis启动_持久化

安装Redis服务
wget http://download.redis.io/releases/redis-2.8.6.tar.gz 
tar -xvf redis-2.8.6.tar.gz
cd redis-2.8.6
make
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/

ps: make出现报错

linux主机redis启动_持久化_02


解决方法:

执行命令make MALLOC=libc

修改配置文件启动服务

vim /usr/local/redis/etc/redis.conf
daemonize yes
# 以守护进程运行不会占用shell交换界面
# 启动redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-server
# 关闭redis
pkill -9 redis-server 或 killall redis-server
Redis的常用命令

5大数据类型

  • string
  • hash
  • list
  • set
  • zset
string 是最简单的类型

一个 key 对应一个 value,string 类型是二进制安全的。redis 的 string 可以包含任何数据

hash 是一个 string 类型的 field(字段)和 value 的映射表

它的添加、删除操作都是 0(1)平均;hash 特别适合用于存储对象,相较于将对象的每个字段存成单个 string 类型,将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。

list 是一个链表结构,主要功能是 push、pop、获取一个范围内的所有值等等

操作中 key 理解为链表的名字。Redis 的 list 类型其实就是一个每个子元素都是 string 类型的双向链表。我们可以通过push、pop 操作从链表的头部或尾部添加删除元素。

set 是集合,他是 string 类型的无序集合。

Set 是通过 hash table 实现的,对集 、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和 blog 的 tag 功能。集合不允许有重复值。

zset 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。

可以理解为有两列的 mysql 表,一列存的 value,一列存的顺序。操作中 key 理解为 zset 的名字。
key-values操作String操作

ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli
redis-cli
# -h IP: 连接指定的 redis 服务器
# -p 6379: 指定 redis 服务器的端口
# -a 密码: 使用密码登录
# -n 数据库号: 指定连接哪个数据库
# --raw: redis 支持存储中文
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> exists k1
(integer) 1
127.0.0.1:6379> type k1
string
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379>

对value操作的命令

  • exists(key):确认一个key是否存在
  • del(key):删除一个key
  • type(key):返回值的类型
  • keyrename(oldname, newname):重命名key
  • dbsize:返回当前数据库中key的数目
  • expire:设定一个key的活动时间(s)
  • ttl:获得一个key的活动时间
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库中的所有key

Hash类型操作

127.0.0.1:6379> hmset zhangsan name zhangsan age 18 sex man
OK
127.0.0.1:6379> hmset lisi name lisi age 25 sex man
OK
127.0.0.1:6379> hgetall zhangsan
1) "name"
2) "zhangsan"
3) "age"
4) "18"
5) "sex"
6) "man"
127.0.0.1:6379> hgetall lisi
1) "name"
2) "lisi"
3) "age"
4) "25"
5) "sex"
6) "man"

linux主机redis启动_Redis_03

list列表操作

127.0.0.1:6379> rpush zhangsan zhangsan
(integer) 1
127.0.0.1:6379> rpush zhangsan 18
(integer) 2
127.0.0.1:6379> rpush zhangsan sex
(integer) 3
127.0.0.1:6379> lrange zhangsan 0 -1
1) "zhangsan"
2) "18"
3) "sex"
127.0.0.1:6379>

linux主机redis启动_Redis_04

集合set数据类型

127.0.0.1:6379> sadd mset 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> smembers mset
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sadd mset1 zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> smembers mset1
1) "wangwu"
2) "zhangsan"
3) "lisi"

修改redis密码

vim /usr/local/redis/etc/redis.conf
requirepass 123456
redis-cli -a 123456
Redis半持久化RDB
vim /usr/local/redis/etc/redis.server
save 900 1
save 300 10
save 60 10000
# 900秒内修改一次key
# 300秒内修改10个key
# 60秒内修改10000个key

默认匹配添加生效会在/usr/local/redis目录下生成一个文件名为dump.rdb的文件
修改配置行dbfilename dump.rdb可以修改默认保持文件名

Redis全持久化AOF
vim /usr/local/redis/etc/redis.server
appendonly yes
appendfilename appendonly.aof
auto - aof - rewrite- percentage 100
auto - aof - rewrite- min- size 64MB
appendfsync always
# appendfsync everysec
# appendfsync no

appendonly yes: 开启AOF持久化功能。
appendfilename appendonly.aof: AOF持久化保存文件名。
auto-aof-rewrite-percentage 100: 当AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据。
auto-aof-rewrite-min-size 64MB: 允许重写的最小AOF文件大小配置写入 AOF文件后,要求系统刷新硬盘缓存的机制。
appendtsync always:每次执行写入都会执行同步,最安全也最慢。

Redis主从复制读写分离
  1. 主服务器Maset无需配置
  2. 从服务器配置
vim /usr/local/redis/etc/redis.server
slaveof 192.168.126.135 6379
# 启动服务
# 或者在redis内执行命令
slaveof 192.168.126.135 6379
  • 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。
  • 复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
  • 哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。
  • 集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。