Redis系统学习 二、数据结构
(integer) 42
"likes: [spice]"
(integer) 54
作为一个有些含糊的用例,我们可以看到,对于一些自定义的空间效率很高的(space-efficient)串行化对象,
对于值的加减 可以使用 这些命令:incr incrby decr decrby 命令
穿插一个很吊用来做大数据量统计的东西:bitmap,就是位图
通过SETBIT todayvister 3 1 SETBIT todayvister 2 1 可以统计 BITCOUNT todayvister 效率超级高,亿级别统计 也只需要几十毫秒
如果需要取交集 ,比如 连续一周或者 一个月 登录数 BITOP AND DES DAY1 DAY2 然后BITCOUNT 下 好屌
可以参考http://redis.io/commands/bitop
文章链接地址 http://blog.csdn.net/hguisu/article/details/9191389
二、散列 (HASHES)
散列的设置值和获取值的方法为: hset key field value ; hget key field
还可以同一时间设置多个域、同一个时间获取多个域,获取多个时间
hmset users:goku race 222 age 737
hmget users:goku race powerlevel
hgetall users:goku 获取所有的域 hkeys users:goku 获取所有域的key hdel users:goku age 删除某个域
散列的数据结构比普通的字符串数据结构具有更多的可操作性。我们可以使用一个散列数据
三、列表(Lists)
比较简单,就是一个队列,有索引,可以基于索引进行一些高效操作。
ltrim ltrim key start stop , ltrim 命令会将制定范围外的值都删除掉,只留下范围内的值。
一般一些任务啥的,都可以通过队列 来做,之前我做过一个日志系统,就是通过队列来进行的
四、集合(Sets)
集合数据结构尝尝被用来存储只能唯一存在的值,并提供了许多的基于集合的操作,例如并集。集合数据结构没有对值进行排序,但是其提供了高效的基于值的操作。使用集合数据结构的典型用例是朋友名单的实现
sadd friends:leto wme wjh ywh luci
sadd friends:duncan paul wjh
然后取交集 sinter friends:leto friends:duncan
也可以把交集存起来 sinterstore friends:leto friends:duncan
五、分类集合(Sorted Sets)
最后也是最强大的数据结构,分类集合数据结构。如果说散列数据结构类似于字符串数据结构。主要区分是域的概念,那么分类集合数据结构,
主要区分是标记的概念。标记提供了排序(sorting)和轶划分(ranking)的功能。如果我们想要一个轶分类的朋友名单,可以这样做
zadd friends:duncan 70 ghanima 95 paul 95 chani 75 jessica 1 vladimir
对于duncan的朋友,要怎样计算出标记(score)为90或更高的人数
zcount friends:duncan 90 100 好屌
如何获取某个人在名单里的轶(rank 排名)
zrevrank friends:duncan chani (zreverank 轶是从高到低,zrank 是从低到高 看需求用咯)
小结:
对于Redis的5种数据结构,我们进行了高层次的概述。一件有趣的事情是,相对于最初构建时的想法,你经常能用Redis创造出一些更具实效的事情。对于字符串数据结构和分类集合数据结构的使用,很可能存在一些构建方法是还没有人想到的。当你理解了那些常用的应用案例后,你将发现Redis对于许多类型的问题,都是很理想的选择。还有,不要因为Redis展示了5中数据结构和相应的各种方法,就认为你必须把所有东西都用上。只是用一些命令去构建一个特性是很常见的。
Redis系统学习 二、数据结构的更多相关文章
- Redis 系统学习目录
Redis 系统学习目录 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8. ...
- redis命令学习(二) · THIS SPACE
列表(Lists)操作命令 Redis列表是简单的字符串列表,按照插入顺序排序. 你可以添加一个元素导列表的头部(左边)或者尾部(右边)LPUSH命令插入一个新的元素导头部,而RPUSH插入一个新元素 ...
- Redis系统学习 三、使用数据结构
前言:上一章,简单介绍了5种数据结构,并给出了一些用例.现在是时候来看看一些高级的,但依然很常见的主题和设计模式 一.大O表示法(Big O Notation ) 常用时间复杂度O(1)被认为是最快速 ...
- Redis系统学习 四、超越数据结构
5种数据结构组成了Redis的基础,其他没有关联特定数据结构的命令也有很多.我们已经看过一些这样的命令:info,select,flushdb,multi,exec,discard,watch,和ke ...
- Redis系统学习 五、管理
在最后一章里,我们将集中谈论Redis运行中的一些管理方面内容.这是一个不完整的Redis管理指南,我们将会回答一些基本的问题,初接触Redis的新用户可能会很感兴趣. 配置(Configuratio ...
- redis深入学习(二)-----redis配置文件、持久化
redis配置文件 地址 units单位 a 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bitb 对大小写不敏感 GENERAL通用 1.daemonize 2.pidf ...
- Redis系统学习 一、基础知识
1.数据库 select 1 select 0 2.命令.关键字和值 redis不仅仅是一种简单的关键字-值型存储,从其核心概念来看,Redsi的5种数据结构中的每一个都至少有一个关键字和一个值.在 ...
- Linux系统学习 二、测评-身份鉴别1
身份鉴别 1)对登陆操作系统和数据库系统的用户进行身份表示和鉴别 1.密码文件中的口令字段是否不为空 2.检查各个用户主目录下的.rhosts文件 3.查看/etc/hosts.equiv 学习: 1 ...
- Linux系统学习(二)一Linux基本操作
一.Linux的目录结构 1.1 Linux的目录结构图 1.2 目录内容 /:这就是根目录.对你的电脑来说,有且只有一个根目录.所有的东西,我是说所有的东西都是从这里开始.举个例子:当你在终端里输入 ...
随机推荐
- linux中如何用root去修改其他用户的密码
linux中如何用root去修改其他用户的密码 昨天linux实验课,我有很多自己想摸索的东西.今天周五,本是下午一二节是编译的实验,可强烈的欲望让我今早就来实验室了,摸索吧,碰到了这个问题.... ...
- Equals 和==
class Person { private string name; public string Name { get ...
- 随记两个SHELL文本处理
1,对于AWK通配符的处理 例如文本: AAAAAAAA(CZ航母STYLE+CZ航母STYLE+CZ航母STYLE+CZ航母STYLE);XXXX;CCCCC(F22战机+F22战机);33333( ...
- 文档PDF开放
108个大数据文档PDF开放下载 投递人 itwriter 发布于 2015-01-29 13:34 评论(13) 有2251人阅读 原文链接 [收藏] « » 文/36 大数据 总有人问我 ...
- 访问Google神器,魔高一尺,道高一丈!
最近谷歌的IP被大范围的禁用了.身处一个连谷歌都用不了的过度的程序员,深感命运多舛.幸好,魔高一尺,道高一丈.下面是几种可以使用谷歌的方法. 方法一 1)在chrome浏览器中输入:chrome:// ...
- POJ3233(矩阵二分再二分)
题目非常有简单: Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + ...
- 是男人就下100层【第四层】——Crazy贪吃蛇(1)
贪吃蛇是一款非常经典的游戏,这些经典游戏给我们的童年添加了不少乐趣,今天開始我们来一步一步的在Android设备上实现一款贪吃蛇游戏,我也是第一次写这个游戏,有可能会写错,或者走弯路,可是终于希望能有 ...
- 基于4.5Framework web程序、SQLSERVER数据库打包
原文:基于4.5Framework web程序.SQLSERVER数据库打包 估计很多朋友和我一样,对于C/S程序打包很熟悉,但对于B/S程序打包一头雾水... 最近公司要求我们把项目和数据库(SQL ...
- 我看PS求职简历照
看新闻<大学生求职简历照片不PS 连面试机会都没有>,忍不住也谈些自己的看法. 个人意见,尽量求真,这个求真要有平时努力的保证.长相一般的,知道自己是普通一员,按普通的方式行事就可以.即使 ...
- 使用 C# 进行 Outlook 2003 编程
原文:使用 C# 进行 Outlook 2003 编程 摘要: 本文介绍了 Microsoft Outlook 2003 对象模型介,并探讨了如何使用 C# 编程语言生成 Outlook 识别的应用程 ...