
redis
文章平均质量分 86
redis
花阴偷移
水之积也无厚,则其负大舟也无力,目前从事数据采集和.net开发。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
redis 系列11 列表对象
一. 列表对象概述 Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。在第9篇中讲到了列表对象的编码可以是ziplist或者linkedlist。ziplist编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点(entry)保存了...原创 2018-11-15 18:04:00 · 66 阅读 · 0 评论 -
redis 系列12 哈希对象
一. 哈希对象概述 Redis hash对象是一个string类型的field和value的映射表,hash特别适合用于存储对象。作为哈希对象的编码,有二种一是ziplist编码, 二是hashtable编码。在不同情况下编码是可以转换的。在Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。 1.1 ziplist编码 如果哈希对象是以ziplist编码...原创 2018-11-16 17:51:00 · 58 阅读 · 0 评论 -
redis 系列13 集合对象
一. 集合对象概述 这里的集合是string类型的无序集合,在集合对象中集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合是通过哈希表实现的,集合中最大的成员数为 232-1(4294967295, 每个集合可存储40多亿个成员)。集合对象的编码可以是intset或者hashtable。 1.1 intset编码 intset编码的集合对象使用整数集合作为底层实现,集合...原创 2018-11-19 18:01:00 · 65 阅读 · 0 评论 -
redis 系列14 有序集合对象
一. 有序集合概述 Redis 有序集合对象和集合对象一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。 在前面第9章中讲到Redis 数据对象对应不同底层的数据结构,对于有序集合对象 编码可以是ziplist 或者s...原创 2018-11-20 17:48:00 · 55 阅读 · 0 评论 -
redis 系列15 数据对象的(类型检查,内存回收,对象共享)和数据库切换
一. 概述 对于前面的五章中,已清楚了数据对象的类型以及命令实现,其实还有一种数据对象为HyperLogLog,以后需要用到再了解。下面再了解类型检查,内存回收,对象共享,对象的空转时长。 1.1 类型检查与命令多态 redis中用于操作键的命令基本上可以分为两种类型,一种是可以对任何的键执行,如:del, expire,rename,type,object 这些命令等,对...原创 2018-11-21 17:40:00 · 52 阅读 · 0 评论 -
redis 系列16 持久化 RDB
一.概述 Redis是内存数据库,一旦服务器进程退出,服务器中的数据库内存数据状态也会消失。为了解决这个问题,Redis提供了RDB 持久化功能,这个功能可以将redis在内存中的数据库状态保存到磁盘中,避免数据意外丢失。 RDB持久化可以手动执行,也可以根据服务器配置选项定期执行,是在指定的时间间隔,对你的数据进行快照存储。该RDB文件快照是一个经过压缩的二进制文件。文件名为dump....原创 2018-11-22 12:35:00 · 59 阅读 · 0 评论 -
redis 系列17 持久化 AOF
一.概述 除了上篇介绍的RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB保存数据库中的键值对来记录数据库状态不同,AOF是通过保存redis服务器所执行的写命令来记录数据库状态的。AOF持久化方式记录每次对服务器写的操作,当服务器启动时,就会通过载入和执行AOF文件中保存的命令来还原服务器关闭之前的数据库状态,并在服务器载入AOF文件并还...原创 2018-11-30 17:53:00 · 51 阅读 · 0 评论 -
redis 系列18 事件
一.概述 Redis服务器是一个事件驱动程序,服务器需要处理两类事件:1文件事件,2时间事件。文件事件是关于客户端与服务器之间的通信操作。时间事件是关于服务器内部的一些定时操作。本篇还是参照"Redis设计与实现"书,简要了解下Redis事件。 1. 文件事件 文件事件(file event)是服务器对套接字操作的抽象(套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做...原创 2018-12-02 14:23:00 · 55 阅读 · 0 评论 -
redis 系列19 客户端
一. 概述 Redis服务器是可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。通过使用I/O多路复用技术实现的文件事件处理器,Redis服务器使用单进程单线程的方式来处理命令请求,并与多个客户端进行网络通信。 1.1 伪客户端和普通客户端 对于每个与服务器进行连接的客户端,服务器都为这些客户端建立...原创 2018-12-03 17:50:00 · 55 阅读 · 0 评论 -
redis 系列20 服务器上
一.客户端与服务端交互 本篇简单介绍下服务器,服务器运行涉及的内部原理知识很多,主要了解Redis服务器内部要做哪些事情,需要开发人员去干预的比较少。Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。本节先说客户端与服务器交互原理:服务器与客户端进行了什么交互,服务器中的各个不同组件又是如何...原创 2018-12-05 17:50:00 · 53 阅读 · 0 评论 -
redis 系列20 服务器下
二. serverCron函数 2.3 更新服务器每秒执行命令次数 serverCron函数中的trackOperationsPerSecond函数会以每100毫秒一次的频率执行,这个函数以抽样计算的方式,估算并记录服务器在最近一秒钟处理的命令请求数量,这个值可以通过info status命令的instantaneous_ops_sec域查看: 127.0.0.1:...原创 2018-12-07 17:38:00 · 51 阅读 · 0 评论 -
redis 系列21 复制Replication (上)
一. 概述 使用和配置主从复制非常简单,每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。这个系统的运行依靠三个主要的机制: (1) 当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流...原创 2018-12-11 17:37:00 · 65 阅读 · 0 评论 -
redis 系列22 复制Replication (下)
一. 复制环境准备 1.1主库环境(172.168.18.201)环境说明操作系统版本CentOS 7.4.1708IP地址172.168.18.201网关Gateway172.168.18.1DNS172.168.16.11Redis版本和端口4.0.6 和 6379Redis 密码123456是否RDB持久化...原创 2018-12-12 17:30:00 · 69 阅读 · 0 评论 -
redis 系列23 哨兵Sentinel (上)
一.概述 Sentinel(哨岗或哨兵)是Redis的高可用解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。 1.1下面是...原创 2018-12-14 17:31:00 · 51 阅读 · 0 评论 -
redis 系列24 哨兵Sentinel (中)
四. 检测下线状态 对于Redis的Sentinel中关于下线有两个不同的概念:(1)主观下线(Subjectively Down, 简称 Sdown) 指的是单个 Sentinel 实例对服务器做出的下线判断,此时不会进行故障转移。(2) 客观下线(Objectively Down, 简称 Odown)指的是多个 Sentinel 实例在对同一个服务器做出 Sdown 判断,此时目标sen...原创 2018-12-18 17:51:00 · 48 阅读 · 0 评论 -
redis 系列25 哨兵Sentinel (高可用演示 下)
一. Sentinel 高可用环境准备 1.1 Sentinel 集群环境环境说明操作系统版本CentOS 7.4.1708IP地址172.168.18.200网关Gateway172.168.18.1DNS172.168.16.11三个sentinel服务端口26379,26380,26381Sentinel密码无 不设置...原创 2018-12-20 17:21:00 · 78 阅读 · 0 评论 -
redis 系列26 Cluster高可用 (1)
一.概述 Redis集群提供了分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。在大数据量方面的高可用方案,cluster集群比Sentinel有优势。但Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。学习集群同样先了解一些原理方面包括:节点、槽指派、命令执行、重新...原创 2018-12-25 14:32:00 · 69 阅读 · 0 评论 -
redis 系列27 Cluster高可用 (2)
一. ASK错误 集群上篇最后讲到,对于重新分片由redis-trib负责执行,关于该工具以后再介绍。在进行重新分片期间,源节点向目标节点迁移一个槽的过程中,可以会出现该槽中的一部分键值对保存在源节点中,另一部份键值对则保存在目标节点中。 当客户端向源节点发送一个与数据库键有关的命令时,并且命令要处理的数据库键正好就是正在被迁移的槽时,会出现二种情况的一种: (1) 源节点会先在自己...原创 2018-12-27 14:41:00 · 56 阅读 · 0 评论 -
asp.net core系列 43 Web应用 Session分布式存储(in memory与Redis)
一.概述 HTTP 是无状态的协议。默认情况下,HTTP 请求是不保留用户值或应用状态的独立消息。本文介绍了几种保留请求间用户数据和应用状态的方法。下面以表格形式列出这些存储方式,本篇专讲Session会话状态,计划下篇再讲应用状态。存储方法存储机制CookieHTTP Cookie(可能包括使用服务器端应用代码存储的数据)Session 状态HTTP ...原创 2019-03-18 09:43:00 · 396 阅读 · 0 评论 -
asp.net core系列 70 即时通迅-WebSocket+Redis发布订阅
一.概述 在asp.net core 中可以用WebSocket 或asp.net core SignalR来开发即时通迅。在项目中由于开发前后端分离,对于SignalR前端技术人员不想依赖juqery和SignalR.js包,后端确定使用WebSocket 来实现。对于asp.net core有自带的app.UseWebSockets()中间件,但是使用IIs做为web代理服务器时,需要在...原创 2019-08-09 09:33:00 · 377 阅读 · 0 评论 -
redis 系列10 字符串对象
一. 字符串对象编码 Redis中字符串可以存储3种类型,分别是字节串(byte string)、整数、浮点数。在上章节中讲到字符串对象的编码可以是int, raw,embstr。 如果一个字符串对象保存的是整数值,那么对象RedisObject结构的ptr 属性里面将void*转换成long,字符串对象的编码设置为int。 例1: 使用set命令,创建一个int编码的字符串对象。 ...原创 2018-11-14 17:56:00 · 57 阅读 · 0 评论 -
redis 系列1 linux下安装说明
一. 安装环境 操作系统:centos 7 ,redis版本4.06,客户端windows 7 ,vs2015。 1.1 安装前的条件 yum -y install gcc-c++ 判断是否安装了gcc-c++ ,脚本如下: [hsr@xuegod64 ~]$ yum list | grep gcc-c++ 1.2redis官网下载离线包,上传到linux...原创 2018-10-13 20:00:00 · 72 阅读 · 0 评论 -
redis 系列2 知识点概述
一.概述 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redi...原创 2018-10-30 17:58:00 · 58 阅读 · 0 评论 -
redis 系列3 数据结构之简单动态字符串 SDS
一. SDS概述 Redis 没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。Redis只会使用C字符串作为字面量。在Redis里,使用SDS来表示字符串值,是一个可以被修改的字符串,字符串“键值对”底层都是由SDS实现的。-- 例1:客户端执行如下命令...原创 2018-10-31 17:40:00 · 57 阅读 · 0 评论 -
redis 系列4 数据结构之链表
一. 概述 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可能通过增删节点来灵活地调整链表的长度。作为一种数据结构,在C语言中并没有内置的这种数据结构。所以Redis构建了自己的链表实现。链表在Redis中应用非常多,比如列表键的底层实现之一就是链表,当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现。...原创 2018-11-01 17:56:00 · 49 阅读 · 0 评论 -
redis 系列5 数据结构之字典(上)
一. 概述 字典又称符号表(symbol table),关联数组(associative array), 映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。在字典中,一个key和一个value进行关联称为键值对。在字典中每个键都是唯一的,程序可以在字典中根据键查找关联的值,或通过键更新删除值等操作。在C语言中并没有内置这种数据结构,因此Redis构建了自己的...原创 2018-11-04 17:01:00 · 57 阅读 · 0 评论 -
redis 系列6 数据结构之字典(下)
一.概述 接着上篇继续,这篇把数据结构之字典学习完, 这篇知识点包括:哈希算法,解决键冲突, rehash , 渐进式rehash,字典API。 1.1 哈希算法 当一个新的键值对 需要添加到字典里面时,程序需要先根据“键值对”的键计算出哈希值和索引值,再根据索引值,将包含新“键值对”的哈希表节点放到哈希表数组的指定索引上面。redis计算哈希值和索引值的方法如下:#使用字典...原创 2018-11-07 17:35:00 · 57 阅读 · 0 评论 -
redis 系列7 数据结构之跳跃表
一.概述 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。在大部分情况下,跳跃表的效率可以和平衡树(关系型数据库的索引就是平衡树结构)相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序使用跳跃表来代替平衡树。 Redis使用跳跃表作为"有序集合键"的底层实现之一,如果一个有序集合包含的元素数量比较多,...原创 2018-11-10 16:57:00 · 67 阅读 · 0 评论 -
redis 系列8 数据结构之整数集合
一.概述 整数集合(intset)是集合键的底层实现之一, 当一个集合只包含整数值元素,并且这个集合元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。下面创建一个只包含5个元素的集合键,并且集合中所有元素都是整数值,那么这个集合键的底层实现就会是整数集合。 接着添加非整数值,集合键的底层实现就会是hashtable。127.0.0.1:6379> sadd numb...原创 2018-11-12 17:44:00 · 55 阅读 · 0 评论 -
redis 系列9 对象类型(字符串,哈希,列表,集合,有序集合)与数据结构关系
一.概述 在前面章节中,主要了解了Redis用到的主要数据结构,包括:简单动态字符串、链表(双端链表)、字典、跳跃表、 整数集合、压缩列表(后面再了解)。Redis没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建一个对象系统,这个系统对象包括:字符串对象、列表对象、哈希对象(散列)、集合对象、有序集合对象这五种类型,每种类型对象都用到了至少一种前面所介绍的数据结构。 ...原创 2018-11-13 17:48:00 · 55 阅读 · 0 评论