Redis高级应用的示例分析

技术Redis高级应用的示例分析小编给大家分享一下Redis高级应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis高级实用

边肖将与大家分享一个Redis高级应用的实例分析。相信大部分人都不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章能有很多收获。我们一起来看看吧!

Redis的高级实用特性分为六个部分:

1、安全性

设置客户端连接后,任何其他操作都需要密码。

修改redis.conf配置文件,使用requirepass密码指令设置密码。

修改配置文件后,重新启动redis服务

重启后发现在命令行操作时会给出如下提示。此时,授权需要授权密码。

127.0.0.1:6379keys*

(错误)noauthauthauthenticationrequired。

127 . 0 . 0 . 13360 . 133363333323

127.0.0.1:6379keys*

(emptylistorset)如果不想在命令行输入密码来完成授权,可以在登录客户端时输入密码。

[root @ localhostinit . d]#/usr/local/redis/bin/redis-CLI-aredis 123

127.0.0.1:6379keys*

2、主从复制

Redis主从复制的配置和使用非常简单。主从复制允许多个从服务器拥有与主服务器相同的数据库副本。

主从复制的工作原理:

1.从机与主机建立连接后,发送同步同步命令。

2.master将启动后台进程,将数据库快照保存到文件中。同时,主主进程将开始收集新的写命令并缓存它们。

3.在后台保存后,将此文件发送给slave。

4.slave将此文件保存到硬盘。

主从复制的特点:

A.主设备可以有多个从设备。

B.多个从机可以连接到同一个主机,也可以连接到其他从机(这个特性是为了防止从机在主机故障后同步。如果从设备也连接到其他从设备,从设备将成为主设备,并在主设备挂断后接管服务)

C.主从复制不会阻止主机,在同步数据时,主机可以继续处理客户端请求。

d、提高系统的可扩展性

主从复制的配置:

将以下配置添加到slava的配置文件中:

Slaveof 192.168.1.1 6379 #指定主机的ip和端口。

Authpassword #这是主服务器的密码。

注:主从配置注意事项:

在主从配置文件中,将bind 127.0.0.1的配置改为eth0网卡的ip地址,否则redis的端口默认在127.0.0.1上监控。所以奴隶到主人的端口被封锁了。

更改绑定的IP地址后,进入客户端时使用以下命令:

$ redis _ home/bin/redis-CLI-h 172 . 16 . 206 . 140使用-h参数指定eth0网卡的IP地址,默认值为127.0.0.1。

3、事务处理

目前Redis处理交易比较简单。Redis只能保证一个客户端发起的东西中的命令可以连续执行,其他客户端的命令不会被插在中间。当客户端在连接中发出多命令时,连接将进入事务上下文。连接的后续命令不会立即执行,而是先放入队列。当执行exec命令时,redis将依次执行队列中的命令。

示例:

设置时间58860 . 88888888861

172.16.206.142:6379

休假。46860 . 6666666661

'27'

172 . 16 . 16206666666

设置。46860 . 6666666661

QUE

UED
172.16.206.142:6379> set age 47\
QUEUED
172.16.206.142:6379> set age 47
QUEUED
172.16.206.142:6379> exec
1) OK
2) OK
3) OK
172.16.206.142:6379> get age
"47"

discard:取消一个事务

172.16.206.142:6379> get age
"47"
172.16.206.142:6379> multi
OK
172.16.206.142:6379> set age 100
QUEUED
172.16.206.142:6379> set age 200
QUEUED
172.16.206.142:6379> discard
OK
172.16.206.142:6379> get age
"47"

事务回滚:

Redis不支持事务回滚,当队列中有两个事务,一个完成了另外一个没有完成,那么没有完成的那个事务不会影响整个事务。

172.16.206.142:6379> set name zeng
OK
172.16.206.142:6379> get age
"47"
172.16.206.142:6379> multi
OK
172.16.206.142:6379> incr age
QUEUED
172.16.206.142:6379> incr name
QUEUED
172.16.206.142:6379> exec
1) (integer) 48
2) (error) ERR value is not an integer or out of range
172.16.206.142:6379> get name
"zeng"
172.16.206.142:6379> 
172.16.206.142:6379> get age
"48"

乐观锁:

watch命令会监视给定的key,当exec时候如果监视的key从调用watch后发生过变化,则整个事务会失败。也可以调用watch多次监视多个key,这样就可以对指定的key加乐观锁了。

4、持久化机制

Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。Redis支持两种持久化方式:

1、snapshotting(快照)也是默认方式

2、Append-only file(aof)的方式

Snapshotting方式:

快照是默认的持久化方式,这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb.可以通过配置设置自动做持久化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照

save 900 1  #900秒内如果超过1个key被修改,则发起快照保存

save 300 10  #300秒内如果超过10个key被修改,则发起快照保存

save 60 10000

aof方式:

由于快照方式是在一定时间间隔内做一次,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。

aof比快照方式有更好的持久化性,是由于在使用aof时,redis会将每一个收到的写命令都通过 write函数追加到文件中,当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容

appendonly yes //启用aof持久化方式

#appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化

appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

#appendfsync no //完全依赖os,性能最好,持久化没有保证

5、发布订阅消息

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此消息

测试:

Redis server开三个会话窗口,并进入redis客户端命令行

终端一订阅tv1、tv2两个频道

> subscribe tv1 tv2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "subscribe"
2) "tv2"
3) (integer) 2

终端二订阅tv2频道

> subscribe tv1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1

终端三向tv1频道发布消息hello

>publish tv1 hello
(integer) 2

结果:

终端一、二都收到消息:

1) "message"
2) "tv1"
3) "hello"

6、虚拟内存的使用

Redis的虚拟内存与操作系统的虚拟内存不是一回事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis server外。另外能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上。

配置如下:

vm-enabled yes              #开启vm功能

really-use-vm yes            #确定使用虚拟内存,这条配置需要手动添加    

vm-swap-file  /tmp/redis.swap   #交换出来的value保存的文件路径

vm-max-memory 1000000         #redis使用的最大内存上线

vm-page-size 32             #每个页面的大小32字节

vm-pages 134217728           #最多使用多少个页面

vm-max-threads 4            #用于执行value对象换入的工作线程数量

以上是“Redis高级应用的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/93202.html

(0)

相关推荐

  • redis中RedissonLock如何实现等待锁

    技术redis中RedissonLock如何实现等待锁今天就跟大家聊聊有关redis中RedissonLock如何实现等待锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

    攻略 2021年11月11日
  • Day85--drf06--整体流程及源码分析、全局异常处理与接口文档

    技术Day85--drf06--整体流程及源码分析、全局异常处理与接口文档 Day85--drf06--整体流程及源码分析、全局异常处理与接口文档昨日回顾
    1 频率限制-写一个类,继承SimpleRat

    礼包 2021年12月13日
  • 如何在Cubieboard上搭建个人云存储

    技术怎么在Cubieboard上搭建个人云存储这篇文章将为大家详细讲解有关怎么在Cubieboard上搭建个人云存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作

    攻略 2021年12月13日
  • 网上学历认证,网上怎样打印学历认证证书

    技术网上学历认证,网上怎样打印学历认证证书学历认证报告打印流程1、登陆学信网“中国高等教育学生信息网站(学信网),点击“学历查询”网上学历认证。2、出现“零散查询”页面,点击“零散查询”。3、在页面里输入毕业证证书编号,

    生活 2021年10月21日
  • 什么是分布式数据库和TIDB 整体架构

    技术什么是分布式数据库和TIDB 整体架构这篇文章给大家介绍什么是分布式数据库和TIDB 整体架构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。TIDB 是一个分布式,强一致的可水平扩展的关系型数据

    攻略 2021年12月1日
  • 数据库读写分离的坑有哪些

    技术数据库读写分离的坑有哪些这篇文章主要讲解了“数据库读写分离的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库读写分离的坑有哪些”吧!前言事情是这样的,刚入

    攻略 2021年10月22日