redis 初识
架构
sharding
redis 集群是主从式架构,数据分片是根据hash slot(哈希槽来分布)
总共有16384个哈希槽,所以理论上来说,集群的最大节点(master)
数量是16384个。一般推荐最大节点数量在1000个左右。
数据到shard的映射是根据传过来的key,CRC16生成值,然后对16834个哈希槽取模。目的就是数据能够均匀分布。
为。
没有mongo cluster 中mongos 角色。所有节点既要存储数据,也要存储
节点配置信息,比如某个hash槽的值对应在哪个节点上。客户端通信可以与
任意一个master节点连接。
redis是单线程,单进程的。所以可以拿来做分布式锁
一致性
不是强一致性,因为从master-slave的复制是异步的
持久化
RDB(redis database) 机制
隔一段时间去做一次copy,从内存到disk
AOF(append only file):
logs: 所有的写操作都记录下logs
需要将log写到磁盘中,因此代价比较大
SAVE:
强制redis server 去创建RDB snapshot
数据类型
字符串(Strings)
最多可以储存512字节的内容
列表(Lists)
按照插入顺序排序
LPUSH list a
列表最多包含2^32 - 1个元素
集合(Sets)
无序字符串合集,最多包含2^32 - 1个元素
有序集合(Sorted sets)
哈希(Hashed)
key,value
HSET username:a
消息机制
- pub/sub
很简单,就是定义一个channel,然后将数据publish过去。
需要监听的客户端subscribe这个channel。就可以在onMessage方法中
处理监听到的消息了。
缺点就是一条消息会被多个监听的客户端都监听到,这样在水平扩展的应用服务中会有问题。
- 列表,push pop
将数据push到链表中,然后pop出来,使用阻塞式BLPOP
redis 初识的更多相关文章
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
- Redis初识
安装与使用 Redis-x64-3.2.100:服务端 + 客户端 redis-3.2.5:源代码 Redis Desktop Manager - v0.8.8:客户端(基于Qt5的跨平台Redis桌 ...
- 01.redis初识
Redis学习: redis是什么? Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 不过Redis在生产环境中使用最多的功能是缓存系统.至于其 ...
- C#Redis初识
前面博客写了nginx负载均衡,大致了解了下nginx,不过这都是2016年的,2017年的计划也列了,重要的是执行,最近在看RabbitMQ和redis,由于今天和小伙伴们一起去聚餐了,回来的比较晚 ...
- redis初识及基本操作
一.redis介绍: 1.Redis是什么: REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key-Value) ...
- Redis初识01 (简介、安装、使用)
一.Reids介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...
- 在python中使用redis 初识
一.下载redis模块 pip3 install -i https://pypi.douban.com/simple redis 二.创建单连接 import redis # 创建链接 conn = ...
- redis 初识与安装
一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的values类型相对更多,包括字符串.列表.哈希散列表.集合,有序集合. 这些数据类型都支持pus ...
- Redis 入门到分布式 (一)Redis初识
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.Redis特性目录 Redis的特性: 速度快 持久化 多种数据结构 支持多种编辑语言 功能丰富 简 ...
随机推荐
- n级阶梯,每次走一步或两步,问最多有多少种走法 二叉树实现
NodeTree类 public class NodeTree { private int num; private NodeTree left; private NodeTree right; pu ...
- Robomongo连接MongoDB 报 Authorization failed 解决办法
首先将MongoDB安装文件的bin目录添加到环境变量Path中 如图: 这样就可以直接在cmd命令行,不需要进行目录切换,就可以直接使用啦 打开dos命令框 依次输入下图修改admin密码
- 根据高德API知道坐标获取详细地址信息
/** * 根据坐标获取具体地址 * @param coor 坐标字符串 * @return */ public static String getAdd(String coor){ String u ...
- 本地和svn都删除文件导致版本不同的问题
想要删除一个项目中的文件,同是要删除svn上的文件. 自己操作 1.直接右键删除了本地项目中的一个目录的模块 2.右键删除了库中svn中的这个目录 3.同步本地和svn上的代码 4.问题出现了,本地和 ...
- 伪元素before after
什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以js无法操作他.那为什么叫他"元素"?因为我们可以对其进行跟元素几乎无差别的操作. 伪元 ...
- Hive 查询元数据库获取某个分区的count数
=========查询分区的大小========= select d.NAME,t.TBL_NAME,p.PART_NAME,prm.PARAM_KEY,prm.PARAM_VALUE from TB ...
- C# RichTextBox 滚动条 滚动到最新行
richTextBox.Select(richTextBox.TextLength, 0); richTextBox.ScrollToCaret();
- Java编程思想 - 并发
前言 Q: 为什么学习并发? A: 到目前为止,你学到的都是有关顺序编程的知识,即程序中的所有事物在任意时刻都只能执行一个步骤. A: 编程问题中相当大的一部分都可以通过使用顺序编程来解决,然而,对于 ...
- go语言视频教程和电子书下载
golang视频教程: https://noxue.com/p/399809259943301 go语言 pdf电子书: Design Pattern In Go[go语言设计模式].pdf Go P ...
- Arthas
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 下载&启动 wget https://alibaba.github.io/arthas/arthas-boot.jar 启 ...