广告
返回顶部
首页 > 资讯 > 数据库 >Redis高级应用的示例分析
  • 134
分享到

Redis高级应用的示例分析

2024-04-02 19:04:59 134人浏览 安东尼
摘要

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

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

Redis高级实用特性分6部分:

1、安全性

设置客户端连接后进行任何其他操作时,需要使用密码

修改redis.conf配置文件,requirepass passWord指令就是用来设置密码的

修改完配置文件后要重启redis服务

重启后,发现在命令行执行操作时,会有以下提示。此时需要用auth password 来授权

127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth redis123
OK
127.0.0.1:6379> keys *
(empty list or set)

如果不希望在命令行输入密码来完成授权,则可以在登录客户端时,输入密码

[root@localhost init.d]# /usr/local/redis/bin/redis-cli -a redis123
127.0.0.1:6379> keys *
(empty list or set)

2、主从复制

Redis主从复制配置和使用非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本

主从复制的工作原理:

1、slave与master建立连接后,发送sync同步命令

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

3、后台完成保存后,将此文件发送给slave

4、slave将此文件保存到硬盘上

主从复制的特点:

a、Master可以拥有多个slave

b、多个slave可以连接同一个master外,还可以连接到其他slave(这个特性是为了防止master出现故障后,slave无法进行同步,如果slave还连接了其他slave,那么master挂掉后,这个slave就会变成master,接管服务)

c、主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

d、提高系统的伸缩性

主从复制的配置

在slava的配置文件中加入以下配置:

slaveof 192.168.1.1 6379 #指定master的ip和端口

masterauth PASSWORD  # 这是master的密码

注意:主从配置的注意事项:

master、slave的配置文件中bind 127.0.0.1 这条配置改成eth0网卡的ip地址,否则redis的端口默认监听在127.0.0.1上。这样slave 到master的端口不通。

更改bind 的IP地址后,进入客户端时使用命令:

$redis_home/bin/redis-cli -h 172.16.206.140

即使用-h参数指定eth0网卡的IP地址,默认是127.0.0.1 

3、事务处理

Redis对事务的处理目前还比较简单,Redis只能保证一个client发起的事物中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的命令

例如:

172.16.206.142:6379> set age 27
OK
172.16.206.142:6379> 
172.16.206.142:6379> get age
"27"
172.16.206.142:6379> multi
OK
172.16.206.142:6379> set age 37
QUEUED
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高级应用的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Redis高级应用的示例分析

本文链接: https://www.lsjlt.com/news/66008.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis高级应用的示例分析
    小编给大家分享一下Redis高级应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Redis高级实用特性分6部分:1、...
    99+
    2022-10-19
  • linux中awk高级应用的示例分析
    这篇文章主要为大家展示了“linux中awk高级应用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中awk高级应用的示例分析”这篇文章吧。处理前的文档: Mike ...
    99+
    2023-06-09
  • Oracle高级队列的示例分析
    小编给大家分享一下Oracle高级队列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Oracle高级队列(Advanc...
    99+
    2022-10-18
  • CSS高级语法的示例分析
    这篇文章主要介绍CSS高级语法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 选择器的分组 你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。 用逗号...
    99+
    2022-10-19
  • CSS高级实用技巧的示例分析
    本篇文章给大家分享的是有关CSS高级实用技巧的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用 :not() 在菜单上应用/取消应用...
    99+
    2022-10-19
  • Java高级应用之斗地主游戏的示例分析
    小编给大家分享一下Java高级应用之斗地主游戏的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!运用HashMap、ArrayList、List类实现斗地主综合案例,模拟斗地主游戏的随机发牌,并按照牌的大小和花色进行...
    99+
    2023-06-15
  • Redis分区的示例分析
    这篇文章主要介绍了Redis分区的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Redis是单线程的,如何提高多核CPU的利用率?可...
    99+
    2022-10-19
  • Redis哨兵模式高可用的示例分析
    这篇文章将为大家详细讲解有关Redis哨兵模式高可用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、序言Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Red...
    99+
    2023-06-29
  • Redis瘦身的示例分析
    这篇文章主要介绍Redis瘦身的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis内存回收Redis 服务器的最大占用内存量由配置项 maxmemory 决定,我们可以通过 config set max...
    99+
    2023-06-15
  • Redis集群的示例分析
    这篇文章主要介绍Redis集群的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis集群详解Redis有三种集群模式,分别是:* 主从模式 * Se...
    99+
    2022-10-18
  • Redis协议的示例分析
    这篇文章给大家分享的是有关Redis协议的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。前言我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很...
    99+
    2022-10-18
  • Redis中Cluster的示例分析
    小编给大家分享一下Redis中Cluster的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.1 Redis-Clus...
    99+
    2022-10-18
  • redis事务的示例分析
    这篇文章将为大家详细讲解有关redis事务的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一: 事务实战具体到事务是什么,要保证什么。。。这个我想没必要...
    99+
    2022-10-18
  • Redis中Redlock的示例分析
    这篇文章主要介绍了Redis中Redlock的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。为什么要用锁我待过的一家k12教育公司,...
    99+
    2022-10-19
  • PHP中ThinkPHP高级查询的示例分析
    小编给大家分享一下PHP中ThinkPHP高级查询的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php的框架有哪些php的框架:1、Laravel,La...
    99+
    2023-06-14
  • Redis瞬时高并发秒杀的示例分析
    这篇文章给大家分享的是有关Redis瞬时高并发秒杀的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.Redis丰富的数据结构(Data Structures)字符串(S...
    99+
    2022-10-18
  • Redis分布式锁的示例分析
    小编给大家分享一下Redis分布式锁的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一版本:@Override pu...
    99+
    2022-10-18
  • Keras高层接口应用的示例分析
    这篇文章主要介绍Keras高层接口应用的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.metricskeras.metrics可以用来对数据进行记录跟踪,当我们的数据量太大,又想在中间就看看训练的情况的时...
    99+
    2023-06-25
  • Redis面试题的示例分析
    这篇文章给大家分享的是有关Redis面试题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。应用场景缓存共享Session消息队列系统分布式锁相关推荐:Redis视频教程单...
    99+
    2022-10-18
  • SpringBoot集成redis的示例分析
    这篇文章给大家分享的是有关SpringBoot集成redis的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何使用springBoot集成redis 定义REmote ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作