位图

由bit位组成的数组,实际的底层数组类型是字符串,而字符串的本质是二进制大对象,所以将其视作位图,位图存储的是boolean指,一定程度上可以减少存储空间。

127.0.0.1:6379> setbit "users_tried" 100 1  -- 设置位图指定偏移量的比特位的值
(integer) 0
127.0.0.1:6379> getbit "users_online_order" 400 -- 获取指定偏移处比特位的值
(integer) 0
127.0.0.1:6379> bitcount "users_tried" -- 位图中被设置为1的数
(integer) 1
127.0.0.1:6379> bitop and "users_tried_ID" "users_tried" "users_online_order" -- 位操作, 包括and or xor not;位运算的结果被保存在目标键中
(integer) 13
127.0.0.1:6379> bitcount "users_tried_ID"
(integer) 0

设置键的过期时间:

对于键的管理,我们不仅可以使用del 和 unlink 删除键,还可以设置键的过期时间,让其自动删除。

127.0.0.1:6379> lpush "test" 20 30 40 50 80
(integer) 5
127.0.0.1:6379> expire "test" 20 -- 设置键的过期时间为20 秒
(integer) 1
127.0.0.1:6379> ttl "test"
(integer) 14
127.0.0.1:6379> exists "test" -- 20 秒过后
(integer) 0

如何清除一个键的过期时间:

使用persist持久化键;键的值被删除或者替换;被另一个过期的键重命名。

expireat 和 expire 命令类似,但它可以指定一个绝对的Unix时间。

sort:

127.0.0.1:6379> sadd "test" 24 54 2 34 5 6 24
(integer) 6
127.0.0.1:6379> sort "test"
1) "2"
2) "5"
3) "6"
4) "24"
5) "34"
6) "54"
127.0.0.1:6379> sadd "test2" "sdjdvd" "dvdvd" "awrb" "vvparn"
(integer) 4
127.0.0.1:6379>
127.0.0.1:6379> sort "test2" alpha
1) "awrb"
2) "dvdvd"
3) "sdjdvd"
4) "vvparn"
127.0.0.1:6379> sort "test2" alpha limit 0 2
1) "awrb"
2) "dvdvd"
127.0.0.1:6379> sort "test2" alpha desc
1) "vvparn"
2) "sdjdvd"
3) "dvdvd"
4) "awrb

高级用法

sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]

使用管道

根据redis的通信协议,客户端执行一条命令的过程是:1.Client发送一条命令;2.Server接收命令放入队列;3.执行命令;4.返回结果;

管道的目的是在于减少Client和Server的传输时间;

redis-cli --pipe commandFile

redis事务:

multi 开启事务,exec 提交事务;

注意redis的事务和关系型数据库事务的区别:redis事务没有回滚功能。一般redis的事务出错在两个地方:1.语法错误;2. 错误命令之后的其他命令都会被执行。

发布订阅:

发布者:

127.0.0.1:6379> publish "test" "msg one"
(integer) 2
127.0.0.1:6379> publish "test" "msg two"
(integer) 2
127.0.0.1:6379> publish "test" "msg tree"
(integer) 2

订阅者:

127.0.0.1:6379> subscribe "test"
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "msg one"
1) "message"
2) "test"
3) "msg two"
1) "message"
2) "test"
3) "msg tree"

subscribe 命令用来监听特定频道的可用消息,可以一次订阅多个频道,也可以使用 psubscribe 订阅匹配指定模式的频道。取消订阅频道 unsubscribe

调试Lush脚本:

[redis] 数据特性简单实验的更多相关文章

  1. 图解Redis之数据结构篇——简单动态字符串SDS

    图解Redis之数据结构篇--简单动态字符串SDS 前言     相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...

  2. Redis数据持久化、数据备份、数据的故障恢复

    1.redis持久化的意义----redis故障恢复 在实际的生产环境中,很可能会遇到redis突然挂掉的情况,比如redis的进程死掉了.电缆被施工队挖了(支付宝例子)等等,总之一定会遇到各种奇葩的 ...

  3. Redis简介与简单安装

    Redis简介与简单安装   一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...

  4. Redis 数据变化通知服务实践

    从Redis 2.8.0版本起,Redis加入了“Keyspace notifications”(即“键空间通知”)的功能.键空间通知,允许Redis客户端从“发布/订阅”通道中建立订阅关系,以便客户 ...

  5. Redis 高级特性

    Redis 数据结构 Redis 常用的数据类型主要有以下五种: String Hash List Set Sorted set Redis 内部使用一个 redisObject 对象来表示所有的 k ...

  6. redis数据库的简单介绍

    NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...

  7. Redis数据"丢失"讨论及规避和解决的几点总结

    Redis大部分应用场景是纯缓存服务,请求后端有Primary Storage的组件,如MySQL,HBase;请求Redis的键未命中,会从primary Storage中获取数据返回,同时更新Re ...

  8. redis 高级特性 不要太好用

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  9. Redis的特性以及优势(附官网)

    NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...

随机推荐

  1. telnet客户端模拟浏览器发送请求

    telnet 客户端 telnet客户端能够发出请求去连接服务器(模拟浏览器) 使用telnet之前,需要开启telnet客户端 1.进入控制面板 2.进入程序和功能,选择打开或关闭windows功能 ...

  2. 浅谈Java中set.map.List的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  3. .net 多线程同步的相关知识点

    在多线程开发中,共享对象的同步是经常遇到的问题,以下总结了C#中线程同步的几种技术: 1,InterLocked原子操作 Decrement(ref int location);递减1 Add(ref ...

  4. Linux网络配置之虚拟网卡的配置(Red Hat 6.5)

    怎么查看当前的网络状态,这里就不着重描述,用ifconfig命令就可以.我们直接进入主题. red hat系统中的网卡配置在这个目录中:/etc/sysconfig/network-scripts 1 ...

  5. easyui页签更新

    1.首先引入这个js文件 <script src="/Scripts/tabs.js" type="text/javascript"></sc ...

  6. QT学习之窗口部件

    对话框--QDialog 模态对话框与非模态对话框 模态对话框:就是相当于没关闭它之前,不能再和该应用程序的其他窗口进行交互(比如新建项目时弹出的对话框) 非模态对话框:可以与它交互,也可以与该程序中 ...

  7. POJ 1985 Cow Marathon (树形DP,树的直径)

    题意:给定一棵树,然后让你找出它的直径,也就是两点中的最远距离. 析:很明显这是一个树上DP,应该有三种方式,分别是两次DFS,两次BFS,和一次DFS,我只写了后两种. 代码如下: 两次BFS: # ...

  8. RollingFileAppender

    http://logback.qos.ch/manual/appenders.html#RollingFileAppender 1.基于时间的滚动策略 TimeBasedRollingPolicy 就 ...

  9. 使用#include消除重复代码

    消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...

  10. NetBeans找不到C/C++编译器

    如果您已经安装 NetBeans IDE 6.9,但其中不包括 C/C++ 插件 如果在选择“文件”>“新建项目”时,NetBeans IDE 未显示 "C/C++" 项目类 ...