redis简介及单机/集群环境安装

版权声明:本文为整理博主个人学习过程中遇到的问题和知识点,欢迎大佬们批评指正 https://blog.csdn.net/wxfghy/article/details/80349405

1 Centos7环境下redis的安装

单机

  1. 在linux环境下,安装gcc和gcc-c++
    yum -y install gcc gcc-c++
  2. 解压缩源文件包到/opt目录下
  3. 进入redis目录,输入make命令编译当前文件夹
  4. 进入src目录,输入make install命令,完成安装
  5. 输入redis-server 命令,前台启动redis(即当前窗口作为守护进程,不可关闭)
  6. 克隆会话新窗口下输入redis-cli -p 6379 命令,通过端口6379连接到redis服务
  7. 修改配置文件redis.conf
    1. daemonize no 修改为yes,表示以后台守护进程方式开启redis服务
      需要以命令加配置文件路径的方式启动redis-server ./redis.conf
    2. databases 16 ,表示当前redis中的数据库共有16个数据库,dbid为0~15
    3. bind 127.0.0.1,#注释掉该行,允许远程登录redis服务
    4. protected-mode yes,修改为no,关闭保护模式
  8. linux下输入redis-server ./redis.conf 命令,以配置文件中的配置启动redis服务
  9. 关闭redis,退出命令模式输入quit,停止redis服务输入redis-cli shutdown

集群

  1. 修改各节点上的配置文件redis.conf
    1. cluster-enabled yes放开注释
    2. port 6379各节点修改为不同的端口如7001,7002…
    3. bind 127.0.0.1修改为bind 本机IP地址
  2. 启动所有节点上的redis-server
  3. 检查redis端口是否正确ps -ef|grep redis
  4. 进入redis目录下src目录中执行以下命令
    ./redis-trib.rb create --replicas 1 10.25.34.65:7001 10.25.34.66:7002 10.25.34.67:7003
  5. 通过客户端访问某节点
    redis-cli -c -h 10.25.34.65 -p 7001
  6. 需要安装的环境
    1. ruby环境: yum install -y ruby
    2. ruby与redis连接: gem install redis

2 No-SQL简介

  1. 什么是no-sql?
    非关系型数据库,Not Only SQL的缩写,用于超大规模数据的存储,不需要固定模式,无需多余操作即可横向扩展
  2. 为什么使用no-sql?
    1. 支持大量用户在线高并发访问
    2. 分布式服务架构下的低延迟访问响应
    3. 系统可用性高
    4. 存储非结构化数据
    5. 可扩展属性
  3. CAP定理是什么?
    对于一个分布式的计算系统来说,不可能同时满足CAD三点
    1. 一致性(Consistency) (所有节点在同一时间具有相同的数据)
    2. 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    3. 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
  4. 分布式系统不可能同时满足很好的一致性,可用性和分区容错性,而是满足其中两点
    1. CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    2. CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
    3. AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
  5. 什么是BASE原则?
    NoSQL数据库通常对可用性及一致性的弱要求原则,同时也是反ACID模型,牺牲了高一致性获得可用性或可靠性
    1. Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
    2. Soft state软状态 状态可以有一段时间不同步,异步。
    3. Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时高一致。
  6. BASE和ACID的特点?
ACID BASE
原子性(Atomicity) 基本可用(Basically Available)
一致性(Consistency) 软状态/柔性事务(Soft state)
隔离性(Isolation) 最终一致性 (Eventual consistency)
持久性 (Durable)

7. no-sql数据库有哪些分类?

存储方式 数据库 特点
列存储 Hbase 按列存储数据,方便存储结构化和半结构化数据,方便做数据压缩,具有IO优势
文档存储 MongoDB 文档以类json格式存储,可对字段建立索引,实现关系数据库功能
key-value存储 Redis 通过key快速查询信息,value无格式限制全部存入一个key下
图存储 FlockDB 提高传统数据库存储性能
对象存储 db4o 以对象方式读取数据,类似面向对象语言的语法操作数据库
xml数据库 BaseX 支持XML查询语法

3 redis特点

  1. redis是什么?
    1. Remote Dictionary Server(Redis),key-value存储系统
    2. 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
    3. 单进程,默认16个数据库,默认端口6379
  2. redis有什么优势?
    1. 支持数据的持久化
    2. 支持数据的备份
    3. 读写性能高,读的速度是110000次/s,写的速度是81000次/s
    4. 支持多种数据类型
    5. 原子性的操作
    6. Redis还支持publish/subscribe,通知,key过期等等特性
  3. redis支持的数据类型有哪些?
数据类型 特点
字符串(String) 最多可以是512M,二进制安全(图片或序列化对象)
哈希(Hash) 是String类型的field和value的映射表,适合存储对象
列表(list) 底层实际是字符串链表
集合(sets) 无序、无重复集合
有序集合(sorted sets) 每个元素都会关联double类型的分数,从小到大的排序

4 redis常用的命令

常用命令查询 http://www.runoob.com/redis/redis-strings.html

命令 语法 特点
select select 0~15 按dbid选择数据库
set set key value 在当前数据库下存储键值对
get get key 按key获取value
keys keys k* 获取以k开头的key
flushall flushall 清空全部数据库所有键值对
flushdb flushdb 清空当前数据库所有键值对

String类型

命令 特点
del 删除
append 追加
setex 设置数据过期时间
setnx 仅当目标key不存在时才创建key,避免覆盖数据
mset/mget/msetnx m表示合并,即一个key插入多个value

list类型

命令 特点
lpush key value value… 左侧压栈多个值
rpush 右侧压栈
lrange key start end 按key从左侧开始获取list值,如果end写-1表示最后一个元素,正数越界不会报错
lindex key index 按索引从左侧开始获取第几个元素
lrem key count value 删除key中count个value值
ltrim key start end 从左侧开始连续删除几个元素
rpoplpush key1 key2 将key1的值右侧弹出,压入key2的左侧
linsert key before/after value1 value2 从左侧开始在value1的前面/后面插入value2

set类型

命令 特点
sadd 插入数据
smembers 获取数据
sismenber 查看数据是否存在
srem 删除数据
spop 随机出栈

hash类型

命令 特点
hget 获取指定字段的值
hgetall 获取指定key所有字段和值
hkeys 获取所有哈希表的字段
hlen 获取指定Key的字段数量
hmget 获取多个
hset/hsetnx/hmset 插入数据

Zset类型

命令 特点
zadd key score1 member1… 向有序集合添加成员和分数,同分数内成员排序
zcard 获取成员数
zcount 计算指定区间分数的成员数
zrem key member… 移除有序集合的成员

5 redis持久化

  1. rdb(save)
    1. Redis database,在指定的时间间隔内将内存中的数据集快照写入磁盘(()snapshot快照),它恢复时将快照文件直接读到内存里
    2. 通过rdb的持久化文件dump.rdb保存当前数据库数据,该文件自动生成在当前linux用户的家目录中
    3. 当关闭redis服务的时候会自动完成一次持久化写入dump.rdb文件
    4. 配置文件redis.conf中默认设置为,900s改变1个key,300s改变10个key,60s改变10000个key时,会执行一次save命令提交持久化保存命令
    5. 常规设置: 一分钟1万次,5分钟10次,15分钟1次时,提交save命令
  2. 如何触发备份
    1. save命令是原子性,执行时会生成fork阻塞前台主进程操作,可能会丢失前台最后一次的修改
    2. bgsave命令是后台异步备份
    3. flush命令会生成备份文件,但不会备份当前数据,相当于回到初始状态并保存
  3. 如何恢复备份
    将备份文件(dump.rdb)移动到redis安装目录并启动服务
  4. aof(rewrite)
    append on file,以日志形式保存历史所有的操作过程,需要恢复时,直接replay日志文件即可还原所有操作,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部
    1. 优点: 更高的数据完整性,如设置追加file时间为1s,则故障时最多丢失1s的操作数据
    2. 缺点: 文件比rdb要大,恢复速度要慢,磁盘IO开支更高
    3. 默认关闭AOF功能,通过修改redis.conf配置文件appendonly yes生效
    4. 配置文件中指定aof日志名称appendfilename appendonly.aof
    5. 配置文件中指定触发rewrite的最小文件尺寸auto-aof-rewrite-min-size 64mb(建议512mb)
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页