延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息. 延迟队列的应用场景: 1.新用户注册,10分钟后发送邮件或站内信. 2.用户下单后,30分钟未支付,订单自动作废. 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理. <?php class DelayQueue { protected $prefix = 'delay_queu…
redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的.B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试) 参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里) 参考:二分查找法:各种排序算法的时间复杂度和空间复杂度(阿里) 关于mysql 存储引擎 介绍包括默认的索引方式参考:MySq…
有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值.有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序. 一.内部实现 有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃表) 组成的. 当数据比较少时,有序集合使用的是 ziplist 存储的,有序集合使用 ziplist 格式存储必…
[一]增加元素 --->命令:ZADD key score member [score member] --->向有序集合放入一个分数为score的member元素 --->元素存在,则用新分数更换旧分数. --->命令返回新加入集合的元素,不包含之前已经存在的元素 --->分数不仅可以是整数,也可以是浮点数 --->+inf  -inf 表示正无穷和负无穷…
zadd:有序集合增加一个或者多个键值对 与set集合不同,zset添加的时候需要 指定 score,这个是用来排名的 zrange:返回指定范围的键 zcount:返回集合指定范围的个数(以每个键值 score为参考) zrem:移除集合中的键和键值 zcard:返回集合中键值对的个数 zincrby:对指定键值对 进行增量操作(发现c排到了最后一位) zscore:返回指定键 对应的分值 zset:返回指定键的排名位数 zrangebyscore:以分值为参考,返回范围的所有键 zrevra…
相关命令 1.ZADD ZADD key-name score member [score member……] 将带有给定分值的成员添加到有序集合里 2.ZREM ZREM  key-name member [ member……] 从有序集合中删除指定的成员 php示例 $redis = new redis(); $redis->connect('127.0.0.1', 6609); $redis->delete('sc1'); $redis->delete('sc2'); $redis…
redis语序集合和集合set是一样内部value为string类型的集合,有序不允许重复元素 但是,zset的每个元素有一个double类型的分数(score).redis正是靠这个分数对元素从小到大排序. zset中元素唯一但是分数可以重复 增 zadd zdd key score value [score2 value2] ... 往zset中添加一个后多个元素 127.0.0.1:6379> zadd student 9 zhangsan (integer) 1 如果元素之前已存在,那么…
List命令 value值为LinkedList类型. 使用环境: 1,做大数据集合的增删. 2,任务队列.用户任务队列 链表查看 lrange key start end:获取链表从start到end的元素值 start,end从0开始计数,也可为负数,若为-1则表示链表尾部的元素,-2表示倒数第二个,依次类推. 例如:list1 [0,1,2,3,4,5],查到从0到第三个值 lrange list1 0 3 两端添加 lpush key value1,value2,value3...:在k…
redis学习-集合set常用命令   1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一) 2.smembers:查看集合中所有的元素(上图事例) 3.srem:删除结合中指定的元素 4.scard:返回集合元素的数量 5.SRandMember 如果不填写返回个数,默认是1,如果填写的数字大于集合的size,那么返回集合的所有元素 如果填写的是负数,如果绝对值大于集合的size,那么返回值里会出现一个元素多次出现的情况. 如果key不存在,则返回nil smove:将一个集合的元…
redis 有序集合(zset)函数 zAdd 命令/方法/函数 Adds the specified member with a given score to the sorted set stored at key. 增加一个或多个元素,如果该元素已经存在,更新它的socre值 虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会 更新原有元素的score值 Parameters key score : double value: string Return value Long…
一.简介 zset与set异同 相同之处: 都是没有重复元素的字符串集合 不同之处: 有序集合zset的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员.集合的成员是唯一的,但是评分可以是重复了 . 因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素. 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表. 二.常用命令 1.zadd 语法:…
一.redis的5种数据类型: 1.基础理解: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) hash hash散列值(hash的key必须是唯一的) sort set 有序集合 2.所有命令:http://redisdoc.com/ --------------------------------------------------------------------------------…
#coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上.分数值可以是整数值或双精度浮点数.如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作.当 key 存在但不是有序集类型时,返回一个错误. print r.zadd("1",&q…
1.对一个大文件比如我的文件为 -rw-r--r--  1 ubuntu ubuntu  9.1G Mar  1 17:53 2018-12-awk-uniq.txt 2.使用split命令切割成10个小文件 split -b 1000m 2018-12-awk-uniq.txt    -b 按照字节切割 , 支持单位m和k 3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用 <?php $file=$argv[1]; //守护…
Redis 操作有序集合数据: > zadd names "Tom" // zadd 用于往有序集合中添加元素,其中 1 在 Redis 中称为 score(分数),用来进行排序 (integer) > zadd names "John" (integer) > zadd names "Jeny" (integer) > zrange names - // zrange 用于查看集合元素,0 -1 表示查看第一个到最后一个…
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi Remove one or more images 下载image: pull Pull an image or a repository from a registry 2.container相关操作 start Start one or more stopped containers 启动一个c…
redis 学习(二)-- 通用命令 1. keys pattern 含义:查找所有符合给定模式(pattern)的key 命令 含义 keys * 遍历所有 key keys he[h-l]* 遍历以he开头,第三个字符为h-l之间的所有key keys ph? ?代表一个字符 keys he* 匹配所有以 he 开头的 key dbsize 计算 key 的总数 注意:keys命令一般不在生产环境中使用 生产环境的key比较多,keys这个命令是一个O(n)的命令 由于Redis是单线程的,…
Redis启动服务和String常用命令 1. 启动Redis服务 E:\redis>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.0.504 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'…
概念:它是在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动按新的值调整顺序.可以理解为有两列的mysql表,一列存储value,一列存储顺序,操作中key理解为zset的名字. 和set一样sorted,sets也是string类型元素的集合,不同的是每个元素都会关联一个double型的score.sorted set的实现是skip list和hash table的混合体. 当元素被添加到集合中时,一个元素到score的映射被添加到hash…
ZSET(stored set) 和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 score .实现使用的是 skip list 和 hash table , skip list 的实现使用的是双线链表. Score 的主要作用是排序,因此 sorted set 主要用作索引. zAdd Description Adds the specified member with a given score to the sorted set stored at ke…
一.数据结构 集合与有序集合,列表与有序集合的对比 二.主要API zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. zrem 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略. zscore 返回有序集 key 中,成员 member 的 score 值. zincrby  为有序集 key 的成员 member 的 score 值加上增量 increment . zcard  返回元素的总个数 三.实战 排行榜  参考 :基于redis的…
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序集合的成员是唯一的,但分数(score)却可以重复. 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员) 使用场景 : 排行榜 zadd :…
常用命令 命令 用例和描述 ZADD ZADD key-name score member [score member ...] —— 将带有分值的成员添加到 HSET 中 ZREM ZREM key-name member [member ...] —— 移除给定成员,并返回移除的数量 ZCARD ZCARD key-name —— 返回有序集合包含的成员数量 ZINCRBY ZINCRBY key-name increment member —— 将 member 成员的分值加上 incre…
1.Redis 集合(Set) 参考菜鸟教程:http://www.runoob.com/redis/redis-sets.html Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员). 向集合添加一个或多个成员 127.0.0.1:6379> sadd a…
当数据库对排序支持的不是很好,可以利用redis有序集合排序 原文链接:http://blog.csdn.net/loophome/article/details/50373202…
0. 前言: 这篇文章旨在对redis环境的搭建以及对redis有个大概的认识. 一.redis搭建: 环境:ubuntu 14 软件包:redis-3.0.3.tar.gz 安装步骤: 1. 首先解压redis源码包 2. 进入目录redis-3.0.3,使用make编译源码 3. 编译完成无错后使用sudo make install安装 如下图所示: 二.redis基本命令使用 首先使用redis-server & 后台启动redis,默认端口为6379 1. redis所支持的数据结构类型…
Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集合). 下面来对这5种数据结构类型作简单的介绍: 结构类型 结构存储的值 结构的读写能力 String 可以是字符串.整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作:对象和浮点数执行自增(increment)或者自减(decrement) List 一个链表,链表上的每个节点都包含了一个…
一.Redis简介 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     库是基于特殊的结构,并将数据存储到内存的数据库.从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实    际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证. 2.为什么要使用Redis 1)易扩展  2)大数据量提高性能  3)多样灵活的数据模型 3.redis…
开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis是一种基于内存的高性能非关系型数据库,它以kye-value的形式来存储数据. 5种数据结构 Redis中包含5种数据类型:STRING.LIST.SET.HASH.ZSET. Redis中的5中数据结构(截图出自<Redis in Action>):   Redis以key-value形式存储数…
面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string).哈希(hash).列表(list).集合(set).有序集合(zset). 面试官:有序集合的内部实现方式是什么? 我还沉浸在上一个问题的沾沾自喜中,顿时表情凝固了,手心开始冒出冷汗."这个..没有太深入了解",我支支吾吾的说到. 面试官:回去等消息吧. 这句话说的干净利落,然后就没有然后了.失败是成功的妈妈,我不气馁,决定马上恶补一下. 有序集合的内部实现 有序集合的内部实现有两种,分…