一、Redis 数据备份与恢复

1、Redis SAVE 命令用于创建当前数据库的备份。该命令将在 redis 安装目录中创建dump.rdb文件。

2、语法:redis 127.0.0.1:6379> SAVE

3、恢复数据:只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,

4、创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

5、语法:127.0.0.1:6379> BGSAVE

二、Redis 安全

1、通过 redis 的配置文件设置密码参数  :

    127.0.0.1:6379> CONFIG set requirepass "password"

   这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。

2、Auth 命令用于检测给定的密码和配置文件中的密码是否相符。

 127.0.0.1:6379> AUTH PASSWORD 

三、Redis 性能测试

1、Redis 性能测试是通过同时执行多个命令实现的。基本命令:redis-benchmark [option] [option value]

 例如: 同时执行 10000 个请求来检测性能---> redis-benchmark -n 10000 -q

2、可以使用了多个参数来测试 redis 性能:

redis-benchmark -h 127.0.0.1 -p  -t set,lpush -n 10000 -q

四、Redis 客户端连接

1、Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:

  • 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。
  • 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法
  • 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送

2、最大连接数:maxclients 的默认值是 10000,你也可以在 redis.conf 中对这个值进行修改。redis-server --maxclients 100000

七、Redis 管道技术

1、Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:

  • 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
  • 服务端处理命令,并将结果返回给客户端。

2、Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

  高效:命令一次性向 redis 服务提交,并最终一次性读取所有服务端的响应

八、Redis 分区

1、分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。

2、分区的优势

  • 通过利用多台计算机内存的和值,允许我们构造更大的数据库。
  • 通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。

3、分区类型

  Redis 有两种类型分区。 假设有4个Redis实例 R0,R1,R2,R3,和类似user:1,user:2这样的表示用户的多个key,对既定的key有多种不同方式来选择这个key存放在哪个实例中。也就是说,有不同的系统来映射某个key到某个Redis服务。

(1)范围分区

  最简单的分区方式是按范围分区,就是映射一定范围的对象到特定的Redis实例。

  比如,ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推。

  这种方式是可行的,并且在实际中使用,不足就是要有一个区间范围到实例的映射表。这个表要被管理,同时还需要各种对象的映射表,通常对Redis来说并非是好的方法。

(2)哈希分区

另外一种分区方法是hash分区。这对任何key都适用,也无需是object_name:这种形式,像下面描述的一样简单:

  • 用一个hash函数将key转换为一个数字,比如使用crc32 hash函数。对key foobar执行crc32(foobar)会输出类似93024922的整数。
  • 对这个整数取模,将其转化为0-3之间的数字,就可以将这个整数映射到4个Redis实例中的一个了。93024922 % 4 = 2,就是说key foobar应该被存到R2实例中。

4、不同的分区实现

   客户端分区 : 对于一个给定的key,客户端直接选择正确的节点来进行读写。许多Redis客户端都实现了客户端分区。

   代理分区 : 客户端发送请求到一个代理,由代理来和Redis通信,代理会根据我们的配置来选择正确的Redis实例。

  查询路由 : 你可以将你的查询发送到任何一个Redis实例,实例会将你的查询重定向到正确的服务器。

(PS:对于一个给定的key,分区的工作就是选择一个正确的Redis实例,那么这个选择的过程可以由客户端、代理 或者 Redis实例来做)

借鉴博客:https://www.runoob.com/redis/redis-partitioning.html

     https://www.cnblogs.com/cjsblog/p/9553850.html

     

redis学习(六)的更多相关文章

  1. Redis学习六:Redis的持久化-AOF

    AOF(Append Only File) 一.是什么 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文 ...

  2. php+redis 学习 六 订阅

    <?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 订阅 * * @example php subsc ...

  3. redis学习六 集群的原理(转载)

    转载自 http://shift-alt-ctrl.iteye.com/blog/2285470 一.Redis Cluster主要特性和设计     集群目标 1)高性能和线性扩展,最大可以支撑到1 ...

  4. Python操作redis学习系列之(集合)set,redis set详解 (六)

    # -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...

  5. Redis学习笔记六:持久化实验(AOF,RDB)

    作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...

  6. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  7. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  8. Redis学习——Redis持久化之AOF备份方式保存数据

    新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...

  9. 分布式缓存技术redis学习系列

    分布式缓存技术redis学习系列(一)--redis简介以及linux上的安装以及操作redis问题整理 分布式缓存技术redis学习系列(二)--详细讲解redis数据结构(内存模型)以及常用命令 ...

  10. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

随机推荐

  1. php实现简单链式操作mysql数据库类

    <?php $dbConfig = require_once(dirname(__FILE__).'/config.php'); class Db{     public $conn;      ...

  2. redhat 7.6 密码破解(无光盘)

    开机,在下面界面按e 找到linux16  在最尾输入 rd.break 按 Ctrl+x 输入 mount -o remount,rw /sysroot 输入chroot   /sysroot sh ...

  3. 图片的onload事件与better-scroll结合[ 当fastclick插件和better-scroll发生冲突导致点击事件失效时,可以给需要点击的元素加一个class="needsclick"]

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. MyBatis 配置文件详解

    根元素<configuration>,子元素: <properties> <setttings> <typeAliases> <typeHandl ...

  5. Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战

    Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战 说明:Java生鲜电商平台拼团是拉新引流的利器,将拼团运用到极致的就是拼多多,前期通过选取性价比高.实用性强的商品进行拼团,在社交圈(主要 ...

  6. VBS 脚本对象

    Dictionary对象(1) 1.        属性: a)        compareMode b)       count c)        key d)       item 2.    ...

  7. mmap 与 munmap

    功能描述 mmap(memory map) 将一个文件或其他对象映射进内存. 文件被映射到多个page上, 若文件的大小不是所有page的大小之和, 最后一个page不被使用的空间将会被清零. mum ...

  8. shell脚本中执行sql脚本(mysql为例)

    1.sql脚本(t.sql) insert into test.t value ("LH",88); 2.shell脚本(a.sh     为方便说明,a.sh与t.sql在同一目 ...

  9. Android 隐藏手机号中间四位和隐藏邮箱地址中间四位

    /** * 手机号用****号隐藏中间数字 * * @param phone * @return */public static String settingphone(String phone) { ...

  10. class中static总结-静态成员函数和静态成员变量

    C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化,我们一般选择在类的实现文件中初始化,初始化的方式是书写一遍类型的定义: //A.cpp ); //使用 ...