Redis
文章平均质量分 88
Mergades
专注于应用架构设计。
展开
-
字典——dict
字典又称为散列表,是用来存储键值(key-value)对的一种数据结构Redis字典的实现Redis字典实现依赖的数据结构主要包含了三部分:字典、Hash表、Hash表节点。字典中嵌入了两个Hash表,Hash表中的table字段存放着Hash表节点,Hash表节点对应存储的是键值对。1.1 Hash表/* This is our hash table structure. Every dictionary has two of this as we * implement incremental原创 2021-04-01 10:23:30 · 196 阅读 · 0 评论 -
跳跃表
有序集合在生活中较常见,如根据成绩对学生进行排名、根据得分对游戏玩家进行排名等。对于有序集合的底层实现,我们可以使用数组、链表、平衡树等结构。数组不便于元素的插入和删除;链表的查询效率低,需要遍历所有元素;平衡树或者红黑树等结构虽然效率高但实现复杂。Redis采用了一种新型的数据结构——跳跃表。跳跃表的效率堪比红黑树,然而其实现却远比红黑树简单。数据结构![image.png](https://img-blog.csdnimg.cn/img_convert/7130d290c72369329f9b2b9原创 2021-03-31 20:29:11 · 169 阅读 · 0 评论 -
Redis 的持久化——AOF&RDB
Redis 的持久化——AOF&RDBRedis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照AOF日志AOF 日志是写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。为了避免额外的检查开销,Redis 在向 AOF 里面记录日志的时候,并不会先去对这些命令进行语法检查。所以,如果先记日志再执行命令的话,日志中就有可能记录了错误的命令,Redis 在使用日志恢复数据时,就可能会出错。而写后日志这种方式,就是先让原创 2021-02-03 10:36:19 · 170 阅读 · 0 评论 -
Redis高性能IO模型:为什么单线程Redis能那么快
3. 高性能IO模型:为什么单线程Redis能那么快Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis 为什么用单线程多线程的开销多线程编程模式面临的共享资源的并发访问控制问题:![image.png](https://img-blog.csdnimg.cn/img_convert/f35ff7aac2原创 2021-02-02 11:50:24 · 552 阅读 · 0 评论 -
Redis命令学习—List(列表)
本文参考:http://redisdoc.com/list/index.htmlBLPOP BLPOP key[key ...] timeout:BLPOP是列表的阻塞式(blocking)弹出原语。是LPOP命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将会被BLPOP 命令阻塞,直到等待超时,会有可弹出元素为止。 当给定多个key参数的时候,按参原创 2015-06-14 14:59:19 · 1293 阅读 · 0 评论 -
Linux虚拟机Redis安装
1,下载Redis wget http://download.redis.io/releases/redis-3.0.2.tar.gz 2,安装Redis 加压缩 tar zxvf redis-3.0.2.tar.gz 进入解压目录,编译: cd redis-3.0.2 make 拷贝Redis配置文件: cp redis.conf /etc/ 修改对应redis.con原创 2015-06-13 21:49:08 · 1889 阅读 · 0 评论 -
Redis命令学习—Hash(哈希表)操作
HDEL HDEL key field [field...]:删除Hash key中的一个或多个域, 不存在的域会被忽略。 返回值:被成功删除的key的数量。# 测试数据redis> HGETALL abbr1) "a"2) "apple"3) "b"4) "banana"5) "c"6) "cat"7) "d"8) "dog"# 删除单个域redis> H原创 2015-06-12 09:08:20 · 4171 阅读 · 1 评论 -
Redis命令学习-string类型操作
APPEND key value 如果key已经存在,并且为字符串,那么这个命令会把value追加到原来值的末尾。如果key不存在,首先创建一个空字符串,再执行追加操作。 返回值:返回APPEND后字符串的长度。EXISTS mykey0APPEND mykey "Hello"5APPEND mykey " world"11GET mykeyHello wo原创 2015-06-09 13:51:42 · 929 阅读 · 0 评论 -
Redis命令学习-Transaction(事务)
DISCARD DISCARD :取消事务,放弃执行事务块内的所有代码。如果在使用WATCH命令监视某个key,则取消监视,等同于UNWATCH。 返回值:总是返回ok。 127.0.0.1:6379> MULTIOK127.0.0.1:6379> PINGQUEUED127.0.0.1:6379> SET greeting "hel原创 2015-06-27 14:28:39 · 1093 阅读 · 0 评论 -
Redis命令学习-Pub/Sub(发布/订阅)
PSUBSCRIBE PSUBSCRIBE pattern [pattern ...] :订阅一个或多个符合给定模式的频道。每个模式以*作为匹配符,比如it.*匹配所有以it开头的频道(it.news,it.global.today)等。 返回值:接收到的信息。# 订阅 news.* 和 tweet.* 两个模式# 第 1 - 6 行是执行 psubscrib原创 2015-06-27 13:55:13 · 1205 阅读 · 0 评论 -
Redis命令-HyperLogLog
HyperLogLog数据结构简介 可以看http://www.cnblogs.com/ysuzhaixuefei/p/4052110.html 博客,介绍的相对比较清晰。 HyperLogLog数据结构,可以接收多个参数输入,然后估算出元素的基数。 • 基数:集合中不同元素的数量。比如 {'apple', 'banana', 'cherry', 'ba原创 2015-06-24 20:28:20 · 1136 阅读 · 0 评论 -
Mac下安装Redis
1,首先下载安装包。下载地址:http://download.redis.io/releases/redis-3.0.1.tar.gz2,在编译中需要下载开发工具Xcode。所以,打开一个终端,输入make,回车。然后会出现提示框让你下载安装,直接下载安装即可。3,在文稿下新建Redis文件夹,并剪切我们下载的文件,解压。4,编译安装。sudo make原创 2015-06-24 20:19:02 · 1038 阅读 · 0 评论 -
Redis命令学习-SortedSet(有序集合)
ZADD ZADD key score member[score member ... ]:将一个或多个member元素及其score值加入到有序集key中。如果member已经是有序集合中的值,则更新score。score是整数值,双精度值。如果key不存在,则创建一个有序集合,并加入。如果key不是一个有序集合,则返回一个错误。 返回值:成功添加原创 2015-06-23 20:58:23 · 1149 阅读 · 0 评论 -
Redis命令学习-Set(集合)
1. SADD SADD key member[member ...]:将一个或者多个member计入集合key中去,已经存在集合中的member将会被忽略。计入key不存在,则会创建一个包含member元素的集合。当key不是集合时,返回一个错误。 返回值:被添加到集合中的元素的个数。127.0.0.1:6379> SADD bbs "csdn.原创 2015-06-18 20:44:35 · 1966 阅读 · 0 评论