【狂神说Java】Redis最新超详细版教程通俗易懂

作者: 遇见狂神说分类: 计算机技术 发布时间: 2020-04-01 13:41:52 浏览:2219167 次

【狂神说Java】Redis最新超详细版教程通俗易懂

罗伦斯L:
在第23集 : 用Jedis连接阿里云等服务器上的redis 一. 配置redis.conf 1.设置访问redis的密码:requirepass 要设置密码 2.注释bind 127.0.0.1 (重启redis-server服务,进入redis后要先验证密码,用这个命令:auth 密码 ,然后ping一下看有没有配置成功) 二 . idea访问时添加auth密码 Jedis jedis = new Jedis("服务器的外网ip",6379); jedis.auth("redis的密码"); System.out.println(jedis.ping()); (输出PONG的话就成功了)

【回复】首先要开启安全组策略6379!!!!!!!!! 然后bind注释掉所有!!!!!!! 受保护的也设置为no!!!!! 防护墙也要关掉!!!! 且要重启才能生效!!!
【回复】我就是没有重启redis的服务,我天真得以为重新连接就能重启了
【回复】找到问题了 不知道怎么激起的服务是宝塔安装的redis[酸了][酸了]
Tutu慢慢走:
狂神的redis的window链接给错了,应该是这个 https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

白天不懂爷的黑007:
安装6.0以上版本需要升级gcc到5.3及以上,如下:升级到gcc 9.3: yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash 需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。 如果要长期使用gcc 9.3的话: echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile 这样退出shell重新打开就是新版的gcc了

【回复】希望不要有老表想我一样在根目录下面make半天[大哭]
【回复】为我的系统是Ubuntu16.04 ,下载的离线版本redis解压 ,安装上就是3.0版本 没有geo功能,这是为啥牙
风雨中的Jeff兔:
目前最新版本已经是6.0.8了。[笑哭] Redis6以上需要gcc版本在7以上。 运行下面命令升级gcc #第一步 sudo yum install centos-release-scl #第二步 sudo yum install devtoolset-7-gcc* #第三步 scl enable devtoolset-7 bash

【回复】我怎输入了没反应[笑哭]
【回复】6.0.6 make报错,可以解决
格莱姆的日常:
第二十六篇文章配置template中的enableDefaultTyping()过期了,建议使用mapper.activateDefaultTyping(mapper.getPolymorphicTypeValidator());

【回复】mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
【回复】回复 @fish爱宅着 :mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
WwSsXxu:
P28 老师有些地方讲错了,并且错的有点多,1.他那样直接修改配置文件估计得重启才会有效,我和他一样得方式修改重启后才生效,如果通过客服端直接修改可能可以直接生效(这个没试验过),2.老师set5个键值对的时候,生成得rdb文件其实不是因为修改了才生成,应该是由save生成的,save其实也能生成rbd文件,只不过不是由子进程生成,而是直接由服务器生成,关于这点书上有说。3.flushdb本省其实是不会生成rdb文件的,他那样之所以生成rdb文件是因为满足了配置文件中多长时间修改了多少键的条件,关于这点可以先flushdb,然后删掉rdb文件,再flushdb,发现并不会生成rdb文件。

【回复】flushdb其实会生成rdb文件, 只不过rdb文件是空的
【回复】回复 @山人西来 :真的不会,你先flushdb删除你库里所有的东西,然后你删除rdb文件,再flushdb,你看看你的文件夹里面有没有rdb文件,我自己试过,你可以试一下
【回复】我查资料直接redis直接改配置会直接生效的,但是重启会失效。
冰冰学长:
跟着狂神学习不如说跟着老师学做人![鸡腿]特别好特别好

【回复】现在觉得他变了,用爱发电引流圈粉差不多了,现在开始收割韭菜了,大家还是得保持绝对的理智[哭泣]
【回复】人生思想导师. 名副其实
老刘醒:
说明一下 p23 连接外网首先有在redis.conf改几个设置 1.daemonize yes 2.注释 bind 127.0.0.1 3.protected-mode no 其次看一下自己防火墙对端口号开没开放 firewall-cmd --query-port=6379/tcp 如果是yes就是开放的 然后 redis-server lconfig/redis.conf redis-cli -h 自己外网端口号 -p 6379 最后ping一下如果pong就成功了

【回复】三个设置改了还是不行,而且防火墙没开,怎么办?
【回复】回复 @zgr张先生 :配置密码
最爱斯诺克:
另外,还有一个, 截图中,描述,所有请求在3毫秒内完成, 不准确,应该每一个请求的完成时间都小于3毫秒, 所有请求的完成时间是1.68秒, 总共完成了10w,所有10w/1.68得到每秒5.9w请求的数据,

【回复】回复 @Akiya666 :100% <= 2ms,应该指的是redis完成100个客户端并发1次请求时间小于2ms,10w请求的话,平均每个并发客户端请求1000次,因此总耗时小于2ms*1000=2s,实际总耗时为1.68s,与之相符
【回复】(99%-29%)×100000这么多请求是2ms内完成,那至少1ms,若以1ms算又是单线程时间无法叠加,所以至少要7000ms,还是想不通,求学友指教
【回复】我也感觉不对 找到你了
偏偏任我行:
p26的弃用方法:objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); 替换成:objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);

auto投币机器人:
p12: move 命令用于将指定 key 移动到给定的数据库中

澧兰丶:
P30Redis订阅发布原理 > 原理 Redis是使用C实现的,通过分析Redis源码里面的pubsub.c文件,了解发布和订阅机制的底层实现,即此加深对Redis的理解。 Redis通过 PUBLISH、SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能。 通过 SUBSCRIBE 命令订阅某频道后,redis-server 里维护一个字典,字典的键就是一个个channel,而字典的值则是一个链表,链表中保存了所有订阅这个channel的客户端。SUBSCRIBE命令的关键,就是将客户端添加到给定 channel 的订阅链表中。 通过 PUBLISH 命令向订阅者发送消息,redis-server 会使用给定的频道作为键,在它所维护的 channel 字典中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者。 Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

洛秋秋秋秋:
最新的redis6.0 需要gcc 5以上,先升级gcc sudo yum install centos-release-scl sudo yum install devtoolset-7-gcc* scl enable devtoolset-7 bash 然后再make 就好了

【回复】我输了没有可用软件包怎么办
【回复】为什么不直接使用yum install redis?
帅气的土申哥哥:
之前看了狂神的docker。面试前又来看看狂神的Redis,确实觉得狂神讲的浅显易懂。不过持久化那块有点感觉没说对,恢复的时候有时是采用手动RDB+AOF,单纯的RDB面试回答可能不太行,另外Redis4.0开始就支持混合持久化模式,省去手工运维的烦恼

刃随风舞:
P29扩展 1、RDB持久化方式能够在指定的时间间隔内对你的数据进行快照存储。 2、AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,,AOF命令以Redis协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。 3、只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化 4、同时开启两种持久化方式 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。 RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库( AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段。 5、性能建议 因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一 次就够了,只保留 save 900 1 这条规则。 如果Enable AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,默认超过原大小100%大小重写可以改到适当的数值。 如果不Enable AOF,仅靠Master-Slave Repllcation实现高可用性也可以,能省掉一大笔IO,也减少了rewrite时带来的系统波动。代价是如果Master/Slave 同时挂掉,会丢失 十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个,微博就是这种架构。

【回复】爱你(づ ̄3 ̄)づ╭❤~
浓烟下与荒野:
P32中,从机连接主机显示OK,但主机没有显示有从机的靓仔,请注意主机是否开启了密码,如果是请修改从机的配置文件:masterauth youpassword 改成你主机的密码。

最爱斯诺克:
keep alive的描述是不是不准确 这里我不清楚,但是在http rest api测试中, keep alive的意思是建立链接后,不中断链接,已知用这个链接发送请求, 如果是0,那么就是每次请求都会重新创建链接,请求结束后,断开链接, 这样性能其实是更慢,但更加符合真实多用户请求的场景。 感谢。

公开课 狂神说 Java教程 Redis 视频教程 编程 NoSQL Springboot Redis教程 狂神说Java

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!