Redis

【Redis】发布订阅

*爱你&永不变心* 提交于 2021-01-08 11:29:48
发布订阅 命令 原理 使用场景 命令 原理 通过subsribe命令订阅某个频道后**,redis-server里维护了一个字典,字典的键就是一个个频道,字典的值是链表.**链表中保存了所有订阅这个channel的客户端. 通过publish命令向订阅者发送消息,redis-server会使用给定的频道作为键,在它所维护的channel字典中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者. 使用场景 实时消息系统 实时聊天(频道当作聊天室) 来源: oschina 链接: https://my.oschina.net/u/4394131/blog/4884576

Docker安装Redis

笑着哭i 提交于 2021-01-08 10:07:20
1、启动docker systemctl start docker 2、拉取redis镜像 docker pull redis :5.0.3 注意,如果不注明版本号,则拉取最新版本 3、创建本地redis挂载目录 mkdir -p /root/redis/data /root/redis/conf 4、创建redis.conf文件 touch /root/redis/data /root/redis/conf/redis.conf 5、修改redis.conf文件 下载链接: https://www.lanzous.com/i68hlah 该配置文件可自行在网上下载,http://download.redis.io/releases/,主要修改如下几个配置。 修改之前: bind 127 .0 .0 .1 protected-mode yes #requirepass yourpassword 修改之后: #bind 127 .0 .0 .1 protected-mode no requirepass yourpassword 其中 yourpassword 为你的密码。 6、创建redis容器 docker run -d --name redis -p 6379 : 6379 -v /root/redis/conf/redis.conf:/redis.conf -v /root

Netty 入门与实战:仿写微信 IM 即时通讯系统

∥☆過路亽.° 提交于 2021-01-08 10:05:40
作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,如果你要进阶,想了解 Java 服务器的深层高阶知识,Netty 绝对是一个必须要过的门槛。 有了 Netty,你可以实现自己的 HTTP 服务器,FTP 服务器,UDP 服务器,RPC 服务器,WebSocket 服务器,Redis 的 Proxy 服务器,MySQL 的 Proxy 服务器等等。 如果你想知道Nginx是怎么写出来的,如果你想知道 Tomcat 和 Jetty 是如何实现的,如果你也想实现一个简单的 Redis 服务器,那都应该好好理解一下 Netty,它们高性能的原理都是类似的。 Netty 是互联网中间件领域使用最广泛最核心的网络通信框架。掌握它是作为一名初中级工程师迈向高级工程师最重要的技能之一,同时, Netty 也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一。 然而,绝大部分工程师学习的 Netty 知识点都比较零散,不成系统,无法串成一条线。 于是,一位有情怀的架构师,某大型互联网公司基础架构部技术专家 闪电侠 (闪电侠Github 地址: github.com/lightningMa…),撰写了一本小册子,梳理了自己多年 Netty 实践经验,以帮助更多工程师更快,更轻松的了解 Netty 。 来源: oschina 链接:

redis线程组网络读写

荒凉一梦 提交于 2021-01-08 09:33:12
一、为什么需要多线程 单线程的劣势: 不能利用多核 当value很大时,redis的QPS会下降的很厉害 主要消耗在同步IO上(假设带宽和内存足够) 从socket读取时,会从内核态将数据拷贝到用户态 将数据回写到socket,会将数据从用户态拷贝到内核态 这些读写会占用大量的cpu时间,导致瓶颈,所以引入多线程,分摊这部分消耗,使redis的吞吐量更上一层楼。 多线程优势: 充分利用多核优势 I/O线程同时只是在读或则写socket I/O线程只负责读写,不负责执行命令 命令执行只在主线程中,保证命令的串行执行 二、整体逻辑 三、代码逻辑 3.1 配置 默认是单线程进行读写操作 standardConfig configs[] = { ... createBoolConfig("io-threads-do-reads", NULL, IMMUTABLE_CONFIG, server.io_threads_do_reads, 0,NULL, NULL), /* Read + parse from threads? */ ... createIntConfig("io-threads", NULL, IMMUTABLE_CONFIG, 1, 128, server.io_threads_num, 1, INTEGER_CONFIG, NULL, NULL), /* Single

「GoTeam 招聘时间」哈啰出行Go中间件、存储系统专家(上海)

风格不统一 提交于 2021-01-07 23:26:13
本期招聘企业——哈啰出行 哈啰出行是专业的移动出行平台,旗下包括哈啰单车、哈啰助力车、哈啰打车等产品。公司秉持“科技推动出行进化”的企业使命,坚持“绿色低碳、轻松出行”的服务理念,为广大用户提供覆盖短、中、长距离的全方位无缝衔接的出行服务,努力缓解城市交通压力,减少车辆尾气排放,为智慧城市建设提供可持续发展的移动出行解决方案。 哈啰出行先后获得GGV纪源资本、成为资本、蚂蚁金服、复星等知名投资机构的投资,2017年10月与江苏永安行低碳科技有限公司合并,与蚂蚁金服、深创投、永安行等成为重要的战略合作伙伴。 工作地点:上海 - 闵行区 - 莘庄 - 旭辉莘庄中心 招聘岗位 Go 中间件、存储系统专家 工作职责 负责公司基础架构方向系统的设计与研发,重点方向为API 网关、分布式存储系统、微服务框架、异地多活架构、service mesh等; 任职资格 1. 3年以上golang/c++编程语言开发经验,深入了解主流的微服务框架和存储系统; 2. 熟悉微服务架构,深入理解分布式系统原理,了解Service Mesh相关服务治理框架; 3. 对存储和高性能系统有深入研究者优先,如Redis、Tair、Raft协议、leveldb/rocksdb、Nginx等; 4. 良好的团队协作和沟通能力,责任心强; 5. 具有很强的分析问题和解决问题能力。 投递方式 简历请发至邮箱

Redis 命令大全 看这一篇就满足日常工作

家住魔仙堡 提交于 2021-01-07 14:43:31
redis键(key) 常用命令 命令 注释 keys * 获取所有的key select 0(库角标) 选择第几个库 move key 0(库角标) 将当前的数据库key移动到某个数据库,目标库有,则不能移动 flush 0(库角标) 清除指定库 randomkey 获取随机key type key key的类型 set key value 设置key和value get key 获取key的value mset key1 value1 key2 value2 批量设置key、value mget key1 key2 key3 批量获取value del key 删除key exists key 判断是否存在key expire key second(秒) 给key设置过期时间 pexpire key millisecond (毫秒) 给key设置过期时间 persist key 删除过期时间,持久保存key String类型 简介 String是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 String类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 String类型是Redis最基本的数据类型,一个redis中字符串value最多可以是 512M 存储结构类似:

LeanCloud 2020 回顾

断了今生、忘了曾经 提交于 2021-01-07 12:28:25
各位 LeanCloud 的用户大家好。2020 年是不平静的一年,每个人的生活和工作都因为疫情发生了很大改变。在这一年里很多活动都由线下转向了线上,我们很高兴在这个转变过程中为很多用户提供了有价值的服务,也想在这一年结束时对大家的长期支持表示衷心的感谢。 过去一年里,我们一如既往地不断推进产品和服务的改进和优化:推出了 Flutter SDK,助力使用 Flutter 跨平台移动应用开发方案的开发者;基于 .Net Standard 2.0 重写 C# SDK,提供更完善的 API 接口和对更多平台的支持;在华北节点上线了网络隔离优化方案,支持账户层面乃至应用层控制台、文档面的访问入口隔离,降低意外情况下相互影响的风险,确保服务稳定。 网络隔离 我们在华北节点上线了网络隔离优化方案,为拥有商用版应用的账户免费分配了一个独立 IP(默认提供 2Gbps 的防护带宽),以作为账户下所有应用使用存储服务的默认入口。 使用独立 IP 后,不同开发者的应用使用不同的网络访问入口,可以隔离风险,避免因为其他开发者的应用碰到 DDoS 攻击等意外情况而受牵连。 如果开发者希望更进一步隔离各个应用之间的网络,或者希望为云引擎也配置独立 IP,还可以额外 购买更多的独立 IP [1]。 我们推荐使用云引擎的开发者,特别是在云引擎上托管动态站点的开发者,也为云引擎配置独立 IP。未配置独立 IP

Linux 安装Redis

本秂侑毒 提交于 2021-01-07 11:53:38
参考链接 参考链接 为了方便Redis配置 维护,将其安装为系统服务。 记一下安装过程中的问题: 1.Redis 安装完成后并启动,发现其服务只对 127.0.0.1 开放。这里需要配置 redis.conf 文件,找到 bind 127.0.0.1 进行注释。这样只是为了方便开发环境,在生产环境中建议绑定需要的IP。 密码配置 Redis 教程 Redis 数据类型:String,Hash,list,set,zset(sorted set:有序集合) 常用命令:get、set、del,incr(key 自增)、decr,hset(hash set)、hget,ttl(过期时间 秒)、expire(设置过期时间) 持久化方式可以在 redis.conf 中通过 rdb (定期快照 默认) 或 aof (持久化每个步骤)。 来源: oschina 链接: https://my.oschina.net/u/3620768/blog/1621968

【Redis】Jedis

巧了我就是萌 提交于 2021-01-07 10:51:27
Jedis idea 连接redis 连接本地redis 连接远程redis 常用api 基本 String list set 添加 移除 集合运算 hash 事务 idea 连接redis 连接本地redis 连接本地redis, 则打开本地redis-server 打开后界面如下 public class TestPing { public static void main ( String [ ] args ) { //1. new 一个jedis 对象 Jedis jedis = new Jedis ( "127.0.0.1" , 6379 ) ; //连接本地 //jedis 的命令就是redis的命令 System . out . println ( jedis . ping ( ) ) ; } } 连接远程redis 修改redis.conf 把bind 修改成0.0.0.0 连接redis-server ( base ) flora@MAC-3DGroup:~/myredis$ redis-server ./redis.conf 注意用 ps -ef | grep redis 查看进程时 要是0.0.0.0 才对 java代码 public class TestPing { public static void main ( String [ ] args ) {

同城异地灾备

老子叫甜甜 提交于 2021-01-07 10:35:59
序言 同城异地灾备,主要是用来进行备份容灾的,从而当一个数据中心挂了,另外一个数据中心经过切换之后,能让服务迅速的恢复。 同城双活,则是基于多机房的情况下,流量经过双机房,一个机房挂掉,完全不影响业务。 微风浮起,吹动星空一缕轻云 很正经的吹牛逼 从网络的层面来说,单个机房的存在是一个单点故障,因为一个机房宕机,那么业务立刻中断,从而无法进行升级。 云服务,最重要的就是可扩展性,而什么版本支持扩展。。。从集群的角度来进行扩展。。。 从最开始,业务不断的发展,各种流量拥上来,导致业务的吞吐量的剧增,从而促使底层的技术要不断的进行扩展,从而云平台的版本是否支持,必须要进行升级。。。 随着业务的进一步发展,需要提供高可用水平,从而需要从单机房扩展为多机房,从而也就有了同城容灾。。。 对于运维来说,多一次升级,多一次变更,就会多一个故障,多一个锅。。。大家排排坐,每个人分一点。。。热升级了解一下,不可预知的中断了解一下 同城异地最关键的点在于存储,存储如何跨机房使用,从而分为几个方面进行探讨: 1、 DNS解析 在业务大量使用DNS解耦的时候,而且使用双机房的时候,那么就必然需要DNS具有一定的智能化,从而就有anycast类型的DNS,所谓的anycast类型的DNS,也就是能返回客户端最短路径的IP地址,从而让用户使用更少的时间得到需要访问的IP地址。 换一种解释的方法就是