找了半天,发觉还是redis的源码看起来比较舒服。所以决定今年把redis的源码读一遍顺便做个读书笔记。好好记录下。话说现在越来不越不愿意用脑袋来记录东西,喜欢靠note来记。话说这样不爱用脑会不会过早的老年痴呆呢~~~ 一、redis下载编译这里没什么好说的用的版本是redis-2.8.17 1)redis-server是可执行程序2)mian函数在redis.c里面3)如果要修改调试 这届在src目录下 修改后make或者make clean;make 就行 从main函数说起这里...
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都 支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排 序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写...
一、RDB持久方式RDB持久化是把当前进程的数据已快照的形式保存到硬盘的过程。触发方式:1、手动触发命令:save和bgsavesave:阻塞式,内存较大的实例在执行过程中会造成长时间的阻塞,影响主进程上的正常服务请求。bgsave:fork子进程,RDB持久化的过程在子进程中进行,完成后自动结束进程,并通知主进程。阻塞发生在fork阶段,时间较短。2、自动触发:满足RDB持久化条件后会自动执行持久化过程。相关配置:################# SNAP...
Redis的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表节点,而每个哈希节点就保存在字典中的一个键值对。redis字典所用的哈希表由disht结构定义。typedef struct dictht{dictEntry **table;//哈希表数组unsigned long size;//哈希表大小unsigned long sizemask;//哈希表大小掩码,用于计算索引值 ,总是等于size -1unsigned long used;//该哈希表已有节点数量
}table 属性是一个数组,数组中的每个元素都是一个指向di...
一、介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象。 Redis中每个hash可以存储232 - 1 键值对(40多亿)。 基本命令:添加/更新: hset key field value (将hash表key中的字段field的值设为value) hsetnv key field value (只有在字段field不存在时,设置hash表字段的值) hmset key field1 value1 [field2 value2 ...] (同时将多个fiedl-value(域-值)对设置到hash...
最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)1、关于JedisPool.returnSource(Jedis jeids)这个方法是从redis的池中释放一个redis连接的,类似线程池对线程的回收管理的。看下面的demo代码:public static void main(String...
1.数据库 Redis的所有数据库都保存在redisServer.db数组中,数据库主要是由两个字典组成:dict字典,负责保存键值对;expires,负责保存键的过期时间 Redis使用惰性删除和定期删除两种方式处理过期键:惰性删除是指在碰到了过期键才将其删除,定期删除是指每隔一段时间主动查找并删除过期键(Redis采用随机查找) 针对过期键的处理:RDB(快照)中不包含过期键,AOF文件也不会包含过期键;主服务器发现过期键后会删除过期...
一.redis 环境搭建1.简介
redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list,set这些集合类型也只能包含
string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字符串(APPEND命令)。加加或者减减一个数字字符串(INCR命令,当 然是按整数处理...
回到目录对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现,即session存储的问题,如一个用户登陆后,把一个状态信息存储到当前WEB服务器的session里,而你请求其它页面时,很可能就被路由到另一台服务器了,这时,session也就丢了,而对于这种情况,有人把redis这个存储中间件想了起来,对...
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件。采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务。按照本Redis学习笔记中Redis的按照方式按照后,Redis的配置文件是/etc/redis/6379.conf。下面是Redis2.8.9的配置文件各项的中文解释。#daemonize no 默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes
daemonize yes
# 当 redis 在后台运行的时候, ...
REDIS_STRING (字符串)是Redis 使用得最为广泛的数据类型,它除了是SET 、GET 等命令的操作对象之外,数据库中的所有键,以及执行命令时提供给Redis 的参数,都是用这种类型保存的。字符串编码字符串类型分别使用REDIS_ENCODING_INT 和REDIS_ENCODING_RAW 两种编码: REDIS_ENCODING_INT 使用long 类型来保存long 类型值。 REDIS_ENCODING_RAW 则使用sdshdr 结构来保存sds (也即是char* )、long long 、double 和long double 类...
1 Redis简介1.1 Redis是什么Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库。 1.2 Redis特点(1)基于内存(2)可持久化数据(3)具有丰富的数据结构类型,适应非关系型数据的存储需求(4)支持绝大多数主流开发语言,如C、C++、Java、Python、R、JavaScript等。(5)支持集群模式,高效、稳定。 1.3 数据模型(重点)(1)键值对形式。(2)Redis的数据结构类型,指...
Redis命令中的Pub/SubRedis在 2.0之后的版本中 实现了 事件推送的 发布订阅命令以下是Redis关于发布和订阅提供的相关命令SUBSCRIBE channel [channel ...]订阅给定的一个或多个频道的信息。PSUBSCRIBE pattern [pattern ...]订阅一个或多个符合给定模式的频道。PUBLISH channel message将信息 message 发送到指定的频道 channel 。PUBSUB <subcommand> [argument [argument ...]]查看所有活跃的频道PUNSUBSCRIBE [pattern [patter...
当一个客户端执行SUBSCRIBE命令订阅某个或某些频道时,这个客户端与被订阅频道之间就建立起了一种订阅关系。Redis将所有频道的订阅关系保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值是一个链表,链表里面记录了所有订阅这个频道的客户端:struct redisServer{//保存所有频道的订阅关系dict *pubsub_channels;
}如果频道已经有其他的订阅者,那么他在pubsub_channels字典中必然有相应的订阅...
Redis 简介Redis遵守BSD协议, 是一个基于内存的高性能key-value数据库。特点:支持数据持久化,可以把内存中的数据保存到磁盘(数据备份),重启的时候可以再次加载使用(数据恢复)。不仅仅支持简单的key-value类型,提供string,list,set,zset,hash多种数据结构。支持数据备份——+master-slave模式数据备份Redis优势:性能极高,读速度110000次/s,写速度81000次/s。丰富数据类型。原子性,单个命令是原子性的。多个操作支持...