博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis课件总结.
阅读量:2242 次
发布时间:2019-05-09

本文共 4541 字,大约阅读时间需要 15 分钟。

第一课

1、redis简介

redis全称:remotedictionary server

存储系统:

      1、RDBMS关系型数据库: MYSQL/ SQLSERVER

      2、NOSQL非关系型数据库: REDIS/MEMCACHED/MongoDB/HBas

2、redis与memcached的区别

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:

      1 、Redis不仅仅支持简单的k/v(key、value)类型的数据,同时还提供list,set,hash等数据结构的存储。
      2 、Redis支持数据的备份,即master-slave模式的数据备份,redis通过SENTINEL哨兵来进行主从的切换。redis在3.0 开始支持redis cluster(集群),但是可能并不完善

      3、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别(我个人是这么认为的)

      4、另外:redis单线程,memcached多线程(可以使用多核cpu)

Redis组件:

      1、redis-serverredis的服务端

      2、redis-cliredis的客户端

      3、commandlineinterface

      4、redis-benchmark(压力测试工具)

      5、redis-check-dump&redis-check-aof(检查redi持久化工具)

      6、corrupted RDB/AOF fileutilities

3、redis 持久化

      Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability= age*log (size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的。

      同时由于Redis将内存中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个操作,直到子线程完成swap操作后才可以进行修改。

4、Redis 并发相关介绍

      1、Million small key →stringvaluepairsuse~100MBof memory

      2、Single threaded → but cpu should not to be thebottleneck

      3、Averagelinuxsystemcandeliver even 500K requestpersecond(50w并发)如果较好的硬件经过测试支持百万的并发是完全没有问题的

第二课

1、Redis安装

第一步、wget
第二步、解压并进入源码目录,less README.md里面有安装步骤
第二步、在源码目录make,完成安装
第四步、在源码目录make test,检查安装有无问题,如果出现以下问题:
[err]: Test replication partial resync: ok psync (diskless: yes, reconnect: 1) in tests/integration/replication-psync.tcl
Expected condition '[s -1 sync_partial_ok] > 0' to be true ([s -1 sync_partial_ok] > 0)
是由于安装环境(如虚拟机)配置太低导致的,解决方式:

2、修正目录结构

第一步、整理Redis的配置文件,在源码目录下
[root@localhost redis]#    mkdir conf
[root@localhost redis]#    mv redis.conf conf/
[root@localhost redis]#    mv sentinel.conf conf/
第二步、整理不常用文件,在源码目录下
[root@localhost redis]#    mkdir others
[root@localhost redis]#    mv 00-RELEASENOTES BUGS CONTRIBUTING COPYING INSTALL Makefile MANIFESTO README.md runtest runtest-cluster runtest-sentinel others/
第三步、整理可执行文件,在源码目录下
[root@localhost redis]#  mkdir bin
[root@localhost redis]#  cd src
[root@localhost src]#    mv redis-server redis-cli redis-sentinel ../bin
 

第三课

1、修改redis配置文件redis.conf

1、修改Redis服务的监听地址

默认是bind 127.0.0.1——>应该修改为bind 本机IP

2、开启保护模式

默认是protected-mode yes——>保持默认就可以了

3、Redis服务的监听端口

默认是port 6379——>保持默认就可以了

4、 tcp的三次握手进行中accept queue队列的Send-Q的最大值

默认是tcp-backlog 511——>保持默认就可以了

5、以守护进程(后台daemon)的方式运行redis

默认是daemonize no——>应该修改为daemonize yes

6、指定redis的日志文件以及写日志的级别

默认是logfile ""——>应该修改为logfile "自定义目录"

默认是loglevel notice——>保持默认就可以了

7、redis最多支持多少个数据库

默认是databases 16——>保持默认就可以了

8、设置RDB的持久化方式→Snapshotting快照

9、指定RDB持久化文件

默认是 dbfilename dump.rdb      RDB持久化的文件名,保持默认就可

10、设置AOF的持久化方式→类似于mysql的二进制日志  

默认是 appendonly no                       表示不启用AOF方式

      appendfilename "appendonly.aof"      AOF持久化的文件名

      appendfsync everysec               表示每秒记录一次持久化文件

修改为 appendonly yes                      表示启用AOF方式

      剩下俩个保持默认就可以了

11、指定两种持久化文件的生成路径:

默认是 dir ./                    ——>  修改为dir 指定的路径

12、为redis设置密码→客户端连接使用

默认是 #requirepass foobared     ——>  修改为requirepass redis

13、设置redis主从→以上都是redis的单点设置

redis主服务不用做任何配置,只需要在从服务器的redis.conf上指定master的ip与端口后,启动从库就可以自动同步。默认是#slaveof<masterip><master port> ——> 修改为slaveof 主服务器IP 主服务器端口。另外如果主库设置了密码,从库需要配置如下masterauth<master-password>。

2、启动Redis

   官网给出的启动命令:If you want to provide your redis.conf, you have to run it using anadditional parameter (the path of the configuration file):

% cd src

% ./redis-server /path/to/redis.conf

   由于我们之前更改了目录结构,所以启动方式如下:

3、服务器上登录Redis

第四课

1、对Key-Value的增删改查(5种数据类型)

0)、对数据库的操作—help @connection

 

0)、对redis服务器的操作—help @server

1)、对字符串的操作—help @STRING

       在同一个数据库内,key是不能重复的,我们平时把这个数据库叫名称空间(Redis默认有16个名称空间),我们平时使用不同的名称空间,在不同的名称空间里,键值是可以重复的。

2)、对哈希表的操作—help @Hash

 

 

 

3)、对链表的操作—help @LIST

4)、对无序集合的操作—help @set

5)、对有序集合的操作—help @sorted_set

2、如何设置一个Key-Value对的生效时间

3、如何设置Redis的持久化

设置RDB的持久化方式→Snapshotting快照

4、Redis对事务的支持

       事务:一组相关的操作是原子性的,要么都执行,要么都不执行;一组事务,要么成功,要么撤回。redis通过multi、exec等命令实现事务功能。

第五课

1、Redis的复制/主从

       一个master可以有多个slave,一个slave还可以再有slave,所以支持链式复制。Master以非阻塞方式同步数据至salve,master可以同时处理多个slave的操作。

第一步、从master上拷贝redis到slave上

scp -r -P 20755 redis

mkdir -p /data/zpy/redis/

第二步、配置slave服务器(一般3步)

创建redis的日志文件

在redis.conf里修改bind语句

在redis.conf里修改slaveof语句(有2种方式)和 masterauth语句

第三步、主从分别启动redis

启动指令都是{redis安装目录}/redis-server ../conf/redis.conf

第四步、测试主从设置

2、REDIS安全简介

1)、禁止一些高危命令

      修改 redis.conf 文件,添加以下语句以禁用远程修改 DB 文件地址

rename-commandFLUSHALL ""

rename-commandCONFIG   ""

rename-commandEVAL     ""

2)、以低权限运行 Redis 服务

      为 Redis 服务创建单独的用户和家目录,并且禁止登陆/sbin/nologin

3)、为 Redis 添加密码验证

      修改 redis.conf 文件,添加requirepass 自定义密码

4)、禁止外网访问 Redis

      修改 redis.conf 文件,修改bind 10.0.140.84,使得 Redis 服务只在当前主机可用

 

你可能感兴趣的文章
SDO_GEOMETRY结构说明
查看>>
oracle 的 SDO_GEOMETRY
查看>>
往oracle中插入geometry的两种方式
查看>>
Oracle Spatial中的Operator操作子 详细说明
查看>>
Oracle Spatial中SDO_Geometry详细说明
查看>>
oracle 聚合函数 LISTAGG ,将多行结果合并成一行
查看>>
Oracle列转行函数 Listagg() 语法详解及应用实例
查看>>
LISTAGG函数的用法
查看>>
Oracle Spatial操作geometry方法
查看>>
IDEA类和方法注释模板设置(非常详细)
查看>>
Java程序初始化的顺序
查看>>
Dubbo和Spring结合配置文件内容解析为bean的过程
查看>>
fastJson注解@JSONField使用的一个实例
查看>>
fastjson的@JSONField注解的一点问题
查看>>
fastjson使用(三) -- 序列化
查看>>
浅谈使用单元素的枚举类型实现单例模式
查看>>
Java 利用枚举实现单例模式
查看>>
Java 动态代理作用是什么?
查看>>
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) (清晰,浅显)
查看>>
三种线程安全的单例模式
查看>>