2022
我们一起努力

redis教程(ubuntu安装redis教程)

本文目录:

  • 1、lua脚本~ Redis调用
  • 2、Linux下安装配置redis详细教程,并配置哨兵模式
  • 3、关于Redis批量写入的介绍
  • 4、Redis官方教程 Expire超时
  • 5、AWS Linux安装Redis简易教程
  • 6、关于Redis RDB方式数据备份与恢复

lua脚本~ Redis调用

参考资料:

redis常见命令

官方调用lua文档

redis菜鸟教程

lua菜鸟教程

其他:

一句话,因为要用所以学习简单粗暴

本次仅学习如何使用redis调用lua脚本(含springboot调用方式),lua脚本如何写以后有时间在玩。

写redis锁时经常使用的一个脚本:

我这里的客户端用的 windows 的,将准备好的 lua 脚本放在自己指定的文件夹

报错了!!! why ??? 这个符合eval语法吖?

其实,这里面有一个问题就是如果想要直接执行文件,就不需要进入 redis-client

当然如果想要在 reids-client 内执行怎么办呢?

这里展示部分代码

将脚本放在 resouces 文件下 lua/unlock.lua

测试代码:

测试控制台结果。当然也需要在redis-client中检查下是否是正确的结果

Linux下安装配置redis详细教程,并配置哨兵模式

redis版本为redis-3.2.12,使用工具将安装包上传到data目录。

在data目录下创建文件夹redis,将redis安装在此目录。

第一步:解压。

第二步:安装,PREFIX=/data/redis用来设置安装目录。

到此,redis已经安装完成,剩下就是配置和启动服务。

进入redis目录, 创建配置文件conf、日志logs、数据库dump、进程号pid四个目录,用来存放对应的文件,这四个目录也可以存放在其他文件夹,只要与配置文件中的配置一致即可,否则在启动服务时会报错。 其中bin目录就是redis安装成功后的一些命令文件。

redis服务配置一主二从,哨兵模式。注意:如果在实际开发中用不到哨兵模式,redis服务配置一主一从即可。

主Redis配置:redis_6379.conf

从Redis配置,redis_6380.conf和redis_6381.conf,与主Redis配置基本上一样,不一样的地方在于 端口、数据库、日志、pid文件名称 ,都以6380或6381为标志, 最重要的地方是建立主从关系和同步验证。

注意: 对只使用redis服务 ,只需要在主Redis里面配置requirepass,在从Redis里面配置masterauth,密码保持一致,密码尽可能复杂,以免被攻击破解。

注意: 对只使用redis服务 ,如果从Redis也有必要加入访问验证,也可以设置requirepass,而且密码可以与主Redis密码不同。

将配置文件放置到/data/redis/conf目录下,然后就可以启动服务了。

启动服务要按照主从顺序依次启动。

查看服务启动情况:

也可以通过查看日志文件来确认服务是否正常启动。

通过客户端登录Redis验证数据同步情况:

主Redis登录验证,设置数据:

从Redis登录,获取数据:从Redis并没有设置密码,所以无需验证就可以操作。

配置哨兵模式:

Redis Sentinel集群通常由3到5个节点组成,如果个别节点挂了,集群还可以正常运作。Sentinel负责监控Redis集群的 健康 情况。

如果主Redis挂掉,Sentinel集群会通过投票选择一个新的主Redis。 当原来的主Redis恢复时,它会被当做新的主Redis的从Redis重新加入Redis集群。

设置连接master和slave的密码,需要注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码必须设置相同。也就是说主Redis和从Redis都必须设置requirepass和masterauth,而且密码必须相同。

sentinel.conf配置信息:

将该配置文件放置到/data/redis/conf目录下,启动sentinel服务:

验证sentinel是否起作用,可以手工shutdown掉主Redis。

这时从Redis想要访问主Redis同步数据就会提示错误信息:

sentinel在监测到主Redis宕机之后,通过选举,将一个从Redis选定为新的主Redis。通过查看sentinel日志可以发现,选定6380为新的主Redis,同时将另外两个Redis作为从Redis。

注意:选定6380为主Redis后,所有的配置文件都会被修改,主要是重新建立主从关系。

6379会新增:slaveof 127.0.0.1 6380

6380会删掉:slaveof 127.0.0.1 6379

6381会修改:slaveof 127.0.0.1 6380

由于6379服务已经关掉,所以虽然sentinel将6379作为6380的从服务,但是没有真正的建立。

重新启动6379服务,这时sentinel会重建建立一次主从关系:

关于Redis批量写入的介绍

最近测试redis性能,需要批量插入1千万条以上的数据,

就简单进行了研究,大概有以下几种方法:

一:java程序调用,简单的for循环,通过Jedis的方法,直接插入,

       至于速度,不用看,不用试,根本不行,就不给实现了。

二:通过shell脚本,也比较简单,但也是因为要通过port端口的形式,

       连接到redis,速度也是慢的不行,放弃。

三:通过redis提供管道,感觉这种方法是最靠谱的,一下是实现:

 步骤1:首先简单写一个shell脚本:

目的是生成一个用批量插入的脚本文件,

步骤2:这里linux或者windows上生成的文件不能直接当做redis语句来跑,

简单来说,就是因为linux,windows和dos的换行并不一样,

所以需要简单转换一下:

转换的方法有好多种:

1:一般Linux发行版中都带有这个小工具,只能把DOS转换为UNIX文件,命令如下:

上面的命令会去掉行尾的^M符号。(如果机器上没有安装nuix2dos,直接用方法2即可)

2:用vim,vim是vi的改进版本,使用方式:

一行命令即可,保存退出,

步骤3:就是跑脚本了,通过redis提供的管道--pipe形式,

三步即可,完成redis的批量插入,速度,在2000万条的情况下,生成脚本的速度稍慢,插入的速度还在几分钟,

速度可以说是非常快了~

本文来自PHP中文网的 redis教程 栏目:

Redis官方教程 Expire超时

EXPIRE key second

设置超时 key 。超时过期后,key将自动删除。在Redis术语中,通常认为具有超时的key是 不稳定的 。

只有删除或覆盖key内容的命令才能清除超时,包括 DEL , SET , GETSET 和所有 *STORE 命令。这意味着 改变 存储在key中的值而不用新key替换它的所有操作将使超时保持不变。举例来说,增加一键的值 INCR ,往列表推新值的,包括 LPUSH ,或改变了哈希的字段值 HSET ,都不会改变超时。

也可以清除超时,使用 PERSIST 命令将key重新转换为持久key。

如果使用 RENAME 重命名key,则相关的生存时间将转移到新key名称。

如果一个key被 RENAME 覆盖,比如,已经存在key Key_A ,被如下命令所覆盖, RENAME Key_B Key_A ,新key Key_A 将继承所有的 Key_B 的属性,与原始 Key_A 否有超时没有关系。

请注意,使用非正数的超时时间调用 EXPIRE / PEXPIRE 或 使用一个过去时间调用 EXPIREAT / PEXPIREAT ,将导致键被 删除 而不是过期(因此,发出的 键事件 将是 del ,而不是 expired )。

可以使用已经设置超时的key作为参数调用 EXPIRE 。在这种情况下,key的生存时间将 更新 为新值。有许多有用的应用程序,下面的 导航会话 模式部分中记录了一个示例 。

在之前的Redis 2.1.3版本中 ,使用命令更改key来使用超时设置更改key,具有完全删除key的效果。由于复制层中的限制现在已得到修复,因此需要使用此语义。

EXPIRE 将返回0并且不会更改具有超时设置的key的超时。

整数回复 ,具体为:

假如你有一个web服务,你需要记录用户最近浏览的N个页面,每个相邻页面的浏览时间不超过60s。

你可以用redis轻松实现,每次用户打开一个页面,执行如下命令:

如果用户60s没有操作,页面就会被删除,只有60s以内的页面会被记录。

通常,创建Redis key时没有相关的过期时间。key只会永远存在,除非用户以明确的方式将其 删除 ,例如使用 DEL 命令。

EXPIRE 家族命令能够给key设置超时时间,但是会使用一些额外的内存成本。当key设置了过期时,Redis将确保在指定的时间过后删除key。

可以使用 EXPIRE 和 PERSIST 命令(或其他严格相关的命令)更新或完全删除key生存时间。

在Redis 2.4中,到期可能不精确,误差可能在0到1秒之间。

从Redis 2.6开始,到期误差从0到1毫秒。

Key到期信息存储为绝对Unix时间戳(在Redis 2.6或更高版本的情况下以毫秒为单位)。这意味着即使Redis实例未处于活动状态,时间也在流动。

为了使到期效果良好,计算机时间必须稳定。如果您从两台计时器中移动RDB文件并在其时钟中使用大型desync,则可能会发生有趣的事情(例如加载时加载的所有键都将在加载时过期)。

即使运行实例也会检查计算机时钟,例如,如果您设置的key的生存时间为1000秒,然后将计算机时间设置为当前时间向后2000秒,key将立即过期,而不是持续1000秒。

Redis key以两种方式过期:被动方式和主动方式。

当某个客户端尝试访问key时,如果发现key超时,key被动过期。

当然这还不够,因为有过期的key永远不会被再次访问。这些key无论如何都应该过期,所以周期性地Redis会在具有过期设置的key中随机测试几个key。已经过期的所有key都将从key空间中删除。

具体来说,这就是Redis每秒做10次的事情:

这是一个简单的概率算法,基本上假设我们的样本代表整个key空间,我们继续到期,直到可能过期的key百分比低于25%

这意味着在任何给定时刻,使用内存的已经过期的最大key数量最大等于每秒最大写入操作量除以4。

为了在不牺牲一致性的情况下获得正确的行为,当key到期时,在AOF文件中合成 DEL 操作并通知所有副本节点。这样,到期过程集中在主实例中,并且不存在一致性错误。

但是,连接到主服务器的副本节点不会单独地使key过期,(但会等待来自主服务器的 DEL ),但它们仍将采用数据集中存在的过期的完整状态,因此当副本被选为主服务器时它将能够独立地使密钥到期,充分充当主人。

AWS Linux安装Redis简易教程

EPEL是一个yum软件源,通过安装EPEL可以使我们能够通过yum安装redis.

如果需要远程访问Redis服务,在 /etc/redis.conf 中修改配置

改为

重启redis,查看redis运行状态。

关于Redis RDB方式数据备份与恢复

Redis RDB方式数据备份与恢复

Redis 数据备份

实例

Redis恢复数据

1、 获取redis备份目录

以上命令 CONFIG GET dir 输出的 redis 备份目录为 /usr/local/redis/bin。

2、 停止redis服务

src是redis安装目录

3、拷贝redis备份文件(dump.rdb)到 /usr/local/redis/bin目录下

4、重新启动redis服务

5、查看是否redis恢复数据

本文来自PHP中文网的 redis教程 栏目:

【redis教程】的内容来源于互联网,如引用不当,请联系我们修改。

赞(0)
文章名称:《redis教程(ubuntu安装redis教程)》
文章链接:https://www.fzvps.com/156064.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!