Configuración y optimización de Nosql-Redis

Configuración y optimización de Redis

1. Base de datos y clasificación de datos

1. Tipo de datos de almacenamiento

结构化数据:可以通过二维表格形式表达这个数据
非结构化数据:不方便以二维表的形式表达这种类型的数据

2. Dividido en dos bases de datos diferentes según los diferentes tipos de datos almacenados

结构化数据库(sql):里面存储的数据类型是结构化数据。(关系型数据库)
非结构化数据库(nosql):里面存储的数据类型是非结构化数据。(非关系型数据库)

3. Tipos de bases de datos

关系型数据库:Oracle、Mysql、SQLServer、MicrosoftAccess、DB2等
非关系型数据库:Redis、MoryDB、Hbase、CouhDB等

2. Antecedentes de las bases de datos no relacionales

Requisitos de lectura y escritura simultáneos de alto rendimiento para bases de datos
Altos requisitos de almacenamiento para un almacenamiento y acceso eficientes de datos masivos
Alta escalabilidad y requisitos de alta disponibilidad para una alta escalabilidad y alta disponibilidad de bases de datos

3. Introducción a Redis

1.Redis se ejecuta en la memoria y admite la persistencia

2. Adopte el formulario de almacenamiento clave-valor (par clave-valor)

3. Ventajas

具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份

4. Cinco tipos de datos

string(字符串)
hash(哈希)
list(列表)
set(集合)
zset (sorted set:有序集合)

(1) strry

1.是redis最基本类型 ,二进制安全的,最大存储512M。
实例:  set键  设置键值对          get键   获取键值对
 Set string1   8
 Get string1
 8
 Incr string1    //自增
 9
 Decr string1    //自减
 8
 Decrby string1 2   //设置减少值
 6
 Incrby string1 5     //设置增加值
 11

(2) Hachís

1. 一个键值对集合(key=>value)
2.是一个string类型的filed和value的映射表
3.特别适合用于存储对象
实例:
hset hash1 key1 a	#hset添加hash数据
hset hash1 key2 b
hset hash1 key3 c
hset hash1 field1 a1 field2 a2
hget hash1 key1		//hget获取hash数据
hmget hash1 key1 key2 key3		//hmget获取多个hash数据
hmget hash1 filed1 filed2

(3) Lista

1. Redis列表是简单的字符串列表,按照插入顺序,可以添加一个元素到列表的头部(左边)或者尾部(右边)
实例:
Lpush:从左边推入值
Lpop:从左边弹出值
Rpush:从右边推入值
Rpop:从右边弹出值
Lien:查看某个list数据类型的长度
Lrange List1 列出所有List1的值(从0开始排)

(4) conjunto

Redis的set是string类型的无序集合
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
实例:
sadd set1 12	#sadd key member添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中返回0
1
sadd set1 13
1
sadd set1 12
0
scard set1		//scard查看set数据中存在的元素个数
2
sismember set1 11		//sismember判断set数据中是否     存在某个元素
0
sismember set1 13
1
srem set1 13		//srem删除某个set数据中的元素
1
sismember set1 13
0
smember set1      //列出所有set1的值 

(5) zset

1.Redis zset和set一样也是string类型元素的集合,且不允许重复的值
2.不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
3.zset的成员是唯一的,但分数(score)却可以重复
实例:
zadd zset1 1.1 val1		//zadd key score member天啊及    元素到集合,元素在集合中存在则更新对应score
zadd zset1 2.2 val2
zcard		#查询
zrang			#数据排序

Configuración de Four. Redis

1. Instalación y despliegue

# 安装必要安装包
yum install gcc gcc-c++ -y 
# 挂载必要软件包
mount.cifs //192.168.100.3/mem /mnt
#解压安装包
cd /mnt
tar zxvf redis-5.0.7.tar.gz -C /opt
# 编译安装
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis/ install
#进入util目录,执行脚本
cd utils/
./install_server.sh
# 执行后一路回车在这里添加/usr/local/redis/bin/redis-    server一句
Please select the redis executable path [ ]     /usr/local/redis/bin/redis-server

# 创建命令连接
ln -s /usr/local/redis/bin/* /usr/local/bin 

netstat -ntap | grep 6379    //查看服务是否开启
#使用/etc/init.d/redis_6379可以控制服务的开启和关闭
/etc/init.d/redis_6379 stop //停止服务
/etc/init.d/redis_6379 start //启动服务

2. Archivo de configuración

Parámetro de configuración

bind:监听的主机地址
port: 端口
daemonize yes:启用守护进程
pidfile:指定PID文件
loglevel notice:日志级别
logfile:指定日志文件

3. Comandos de uso común de la base de datos de Redis

Herramienta de línea de comandos redis-cil

1.连接本地数据库
  redis-cil
2.连接远程数据库
   redis-cil -h 192.168.45.131 -p 6379
3.获取命令帮助
   127.0.0.1:6379> help @list
   127.0.0.1:6379> help set
4.set:存放数据
   127.0.0.1:6379> set teacher lisi
5.get:获取数据
   127.0.0.1:6379> get teacher

comandos relacionados con las teclas

1.keys:获取符合规则的键值列表
  127.0.0.1:6379> keys *           //查看当前数据库中所有的键
  127.0.0.1:6379> keys v*          //查看当前数据库中以v开头的键
  127.0.0.1:6379> keys v?          //查看当前数据库中以v开头后面包含任意一个字符的键
  127.0.0.1:6379> keys v??         //看当前数据库中以v开头后面包含任意二个字符的键

2.exists:判断键值是否存在
 127.0.0.1:6379> exists teacher
 127.0.0.1:6379> exists tes

3.del:删除当前数据库的指定key
127.0.0.1:6379> del teacher

4.type:获取key对应的value值类型
5.rename(覆盖)/renamenx(不覆盖):对已有的key进行重命名
  127.0.0.1:6379> rename teacher tea

6.dbsize:查看当前数据库中key的数目
  127.0.0.1:6379> dbsize

4.herramienta de prueba redis-benchmark

-h:指定服务器主机
-p:指定服务器端口
-c:指定并发连接数
-n:指定请求书
-d:以字节的形式指定SET/GET值的数据大小
-q:强制退出redis。仅显示query/sec值

Envíe 100 conexiones simultáneas y 100000 solicitudes al servidor de redis con la dirección IP 192.168.45.131 y el puerto 6379 para probar el rendimiento

redis-benchmark -h 192.168.45.131 -p 6379 -c 100 -n 100000

Pruebe el rendimiento de acceder a paquetes de datos con un tamaño de 100 bytes

redis-benchmark -h 192.168.45.131 -p 6379 -q -d 100

Cinco. Operaciones de bases de datos múltiples de Redis

Redis支持多数据库,默认支持16个数据库,0-15命名
多个数据库相互独立,互不干扰

1. Comandos de uso común para múltiples bases de datos

Cambiar entre múltiples bases de datos

127.0.0.1:6379> select 10 //默认在第一个数据库中
OK
127.0.0.1:6379[10]> select 15
OK
127.0.0.1:6379[15]>  

Mover datos entre varias bases de datos

127.0.0.1:6379[15]> move k1 3   //将k1键移动到数据库3中 

Borrar datos en la base de datos

127.0.0.1:6379> flushdb
127.0.0.1:6379> flushall     //慎用,清除所有数据库数据

Seis. Persistencia de Redis

1. Visión general de la persistencia

1.Redis是运行在内存中,内存中的数据断电丢失
2.为了能够重用Redis数据,或者放置系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化

2. Clasificación persistente

RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本
AOF方式:将执行的写入命令写到文件的末尾,以日志的方式来记录数据的变化

(1) Resistencia RDB

Redis的默认持久化方式
默认文件名dump.rdb

Condiciones desencadenantes

在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
执行save或者是bgsave(异步)命令
执行flushall命令,清空数据库所有数据
执行shutdown命令,保证服务器正常关闭且不丢失任何数据

Pros y contras

适合大规模的数据恢复
如果业务对数据的完整性和一致性要求不高,RDB是很好的选择
数据的完整性和一致性不高
备份是占用内存

Recuperar datos del archivo RDB

将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

Opciones de archivo de configuración

vim /etc/redis/6379.conf
save 900 1     //900秒之内至少一次写操作
save 300 10      //300秒之内至少发生10次写操作
save 60 10000      //60秒之内发生至少10000 写操作,只要满足其一都会触发  快照操作,注释所有的save项表示关闭RDB
dbfilename dump.rdb            //RDB文件名称
dir /var/lib/redis/6379        //RDB文件路径
rdbcompression yes          //是否进行压缩

(2) persistencia AOF

Redis默认不开启
弥补RDB的不足(数据的不一致性)
采用日志的形式来记录每个写操作,并追加到文件中
Redis重启会根据日志文件的内容将写入指令从前到后执行一次以完成数据的恢复工作

Recuperar datos basados ​​en archivos AOF

 将appendonly.aof文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

Opciones de archivo de configuración

vim /etc/redis/6379.conf
appendonly yes            //开启AOF持久化
appendfilename “appendonly.aof”              //AOF文件名称
# appendfsync always   //同步持久化,每次发生数据变化会立即写入磁盘
appendfsync everysec    //默认推荐,每秒异步记录一次(默认值)
# appendfsync no          //不同步,交给操作系统决定如何同步
aof-load-truncated yes      //忽略最后一条可能存在的问题的指令

Mecanismo de reescritura de AOF

AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多
当AOF 文件的大小超过所设定的阈值时,Redis就会服AOF文件的内 容压缩

El principio de reescritura de AOF

Redis会fork除一条新进程,读取内存中的数据(并没有读取旧文件),并重写到一个临时文件夹中,最后替换旧的aof文件

Configuración de reescritura de AOF

vim /etc/redis/6379.conf
# 在日志进行BGPWRITEAOF时,如果设置为yes表示新写入操作不进行同步fsync,只是暂存在缓存区里,避免造成磁盘IO操作冲突,等重写完成后在写入。redis中默认为no
no-appendfsunc-on-rewrite no

# 当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生    BGPEWRITEAOF操作
auto-aof-rewrite-percentage 100

# 当前AOF文件执行BGPEWRITEAOF命令的最小值,避免刚开始启动Redis时由于文件尺寸较小导致频繁的BGPEWRITEAOF
auto-aof-rewrite-min-size 64mb

Siete. Gestión del desempeño de Redis

1. Ver el uso de la memoria de Redis

redis-cil
127.0.0.1:6379> info memory
used-memory:2650536
used-memory-human: 2.53M        //内存使用量

mem_fragmentation_ratio:4.57         //内存碎片

2. Tasa de fragmentación de la memoria

操作系统分配的内存值used_memory_rss除以redis使用的内存值used_memory计算得出

La fragmentación de la memoria se debe a la asignación / recuperación ineficaz de la memoria física por parte del sistema operativo.

不连续的物理内存分配

El seguimiento de la tasa de fragmentación de la memoria es muy importante para comprender el rendimiento de los recursos del ejemplo de redis.

内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低
内存碎片率超过1.5,说明redis消耗了实际需要物理内存的150%,其中的50%是内存碎片率
内存碎片率低于1的,说明Redis内存分配超出物理内存,操作系统正在进行内存交换

3. Uso de memoria

redis实例的内存使用率超过可用最大内存,操作系统将开始进行内存与swap空间交换

Evite el intercambio de memoria

针对缓存数据大小选择
尽可能的使用Hash数据结构
设置key的过期时间

4. Recicla la llave

保证合理分配的redis有显示的内存资源

Cuando el uso de la memoria alcanza el umbral máximo establecido, debe elegir una estrategia de recuperación de claves

默认情况下回收策略是禁止删除
redis.com配置文件中修改maxmemory-policy属性值

-volatile-lru:使用LRUS算法从已设置过期时间的数据集合中淘汰数据
-volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰
-volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰
-alikeys-lru:使用LRU算法从所有数据集合中淘汰数据
-alikeys-random:从数据集合中任意选择数据淘汰
-no-enviction:禁止淘汰数据

Supongo que te gusta

Origin blog.csdn.net/weixin_45647891/article/details/111355347
Recomendado
Clasificación