Redis零起点-探索Redis,学习Redis基础用法
2015-09-03 21:32
519 查看
作者:Gigi Sayfan 时间:2018.8.28
在本文中,我会带领大家一起探索Redis,学习它的基本用法。
丰富的键值类型:字符串,字典(哈希),集合,位图和hyperlogs
对这些值的高级操作
可选择的持久性
主-从式设置
异步复制
监控哨兵、通过、自动故障处理
事务
发布、订阅消息
自动回收最不常用的键值
自动回收超时的键值
脚本(使用Lua)
http://www.cnblogs.com/super-d2/p/3819385.html
如果你使用的是Mac OSX,我建议使用Homebrew来安装。
然后让我们启动redis。在redis-server终端窗口,你会看见这个:
还有一些可爱的ASCII艺术字。现在,在另一个终端窗口redis-cli。这里少了一些色彩,你会看到这个:
不管怎样,我们就要开始了。先存一些关键字和值到数据库里去吧。
哇!你已经掌握了Redis的80%了。这是一个非常简单的高速缓存。
那么怎么删除关键字呢?没问题。
Redis会告诉有多少个关键字被删除了。
“incrby”命令表示+n。因此,你想加多少都可以。redis还可以返回增加后计数器的值。
通过把n设置为负数,你也可以实现向下计数。
计数器的操作是原子操作,这对多用户环境来说很重要。
“lrange”命令接收起始索引和最后索引。-1表示显示到最后一条。第一个索引是0。输出结果从1开始时不要觉得困惑。
更多例子:
它对数据结构操作的接口非常完整,它能够提供随机访问队列lists(使用lrange),后进先出栈stack(使用lpush/lpop),先进先出队列queue(使用lpush,rpop)或双端队列dequeue(对两端的push/pop)。
sets
对于item的无序集合,常常会选择sets。redis对于管理sets有着非常完整的命令:
举个例子,这里有两个sets。一个是不超过20的素数,另一个是1-10的整数。
现在,你可以做第一个测试—“sismember”命令:
找到不超过10的素数,我们可以使用求交集命令
这个例子中我们很幸运,因为结果是排序的。但是通常情况下,sets是无序的,我们得到的结果可能是任意序列的。Redis也支持对sets排序,每个item对应一个分数,然后基于这个分数对sets排序。
总结
redis是一个多功能的数据库,拥有丰富的高级特性。它还有一个相对较新的产品配件来扩展它的能力,使它能够处理那些不能只在一个机器上处理的用例。那就花些时间学习并把它用到你的系统中吧。
作者简介:
Gigi Sayfan是Aclima一个负责软件架构的主管。Aclima是一个创业公司,负责设计和部署分布式传感器网络,提供高级别的环境意识。Gigi从事专业软件开发20多年了,涉及领域广泛,包括即时通讯、变形、芯片制造工艺控制、游戏控制台和嵌入式多媒体应用、脑启发机器学习、客户浏览器开发、3D分布式游戏平台的WEB服务和最近的物联网传感器。它每天写到产品中的编程语言包括C、C++、C#、Python、Java、Delphi、Javascript,甚至还有为操作系统(Windows3.11到windows7,Linux,Max OSX, 嵌入式Lynx和索尼游戏机)所写的Cobol和PowerBuilder。它的擅长的技术领域包括数据库、底层网络、分布式系统、非传统的用户接口和通用的软件开发生命周期。
广告
Redis是一个在内存中的键值数据库,它是免费且开源的。它是用C语言实现的,运行速度非常快。Redis已经是一个成熟(现在是3.03版本)的产品了。它经历了非常严酷的战火的洗礼,给大大小小的用户们使用了多年。Redis提供了非常好的文档,以及供各种编程语言使用的用户库。在本文中,我会带领大家一起探索Redis,学习它的基本用法。
Redis有什么特殊之处?
Redis的速度非常快。要使一个软件运行速度快,最典型的方法就是关注每个细小的功能片,然后玩命地优化它。Redis则不同。它提供的丰富的高级特性能够匹敌甚至超越大多数的键值数据库,但不影响速度。让我们一起快速过一下Redis的特性:丰富的键值类型:字符串,字典(哈希),集合,位图和hyperlogs
对这些值的高级操作
可选择的持久性
主-从式设置
异步复制
监控哨兵、通过、自动故障处理
事务
发布、订阅消息
自动回收最不常用的键值
自动回收超时的键值
脚本(使用Lua)
Redis的基础用例
Redis可用于多种目的。它作为超快的分布式缓冲区非常棒。但是,它常被当作队列(使用命令对一个list的条目作push和pop)使用,或者利用它的发布-订阅系统实现事件路由器功能。Redis通过它的增量命令来计数。对于需要跟踪最后一条item的用例,Redis提供了一个很好的替代方法,不再需要关系数据库中过多的索引,而只是对项目保持一个修剪列表就可以了。Redis实践
让我们进一步探索Redis。从这里下载和安装Redis。http://www.cnblogs.com/super-d2/p/3819385.html
如果你使用的是Mac OSX,我建议使用Homebrew来安装。
然后让我们启动redis。在redis-server终端窗口,你会看见这个:
还有一些可爱的ASCII艺术字。现在,在另一个终端窗口redis-cli。这里少了一些色彩,你会看到这个:
~>redis-cli 127.0.0.1:6379
不管怎样,我们就要开始了。先存一些关键字和值到数据库里去吧。
简单的值
这个例子是关于如何设置和获取简单的字符串型值127.0.0.1:6379> set k v OK 127.0.0.1:6379> get k "v" 127.0.0.1:6379> get no_such_key (nil)
哇!你已经掌握了Redis的80%了。这是一个非常简单的高速缓存。
那么怎么删除关键字呢?没问题。
127.0.0.1:6379> del k (integer) 1 127.0.0.1:6379> del no_such_key (integer) 0
Redis会告诉有多少个关键字被删除了。
计数
Redis能够支持+1和+n两种计数方式来改变键所对应的值。127.0.0.1:6379> set counter 0 OK 127.0.0.1:6379> incr counter 1 (integer) 1 127.0.0.1:6379> incrby counter 3 (integer) 4
“incrby”命令表示+n。因此,你想加多少都可以。redis还可以返回增加后计数器的值。
通过把n设置为负数,你也可以实现向下计数。
127.0.0.1:6379> incrby counter -2 (integer) 2
计数器的操作是原子操作,这对多用户环境来说很重要。
浏览关键字
如果你想知道哪些关键字是可用的,你可以使用命令”keys”结合模型匹配:127.0.0.1:6379> set k1 1 OK 127.0.0.1:6379> set k2 2 OK 127.0.0.1:6379> keys k* 1) "k1" 2) "k2"
lists
redis不只是可以存储简单的字符串和数字。让我们来看一下list。lists是有序的item集合。你可以从lists尾部push或pop item。你可以查询lists的长度,你可以获取lists的片段。这里有一个简单的例子:127.0.0.1:6379> lpush superheroes batman (integer) 1 127.0.0.1:6379> lpush superheroes spiderman (integer) 2 127.0.0.1:6379> llen superheroes (integer) 2 127.0.0.1:6379> lrange superheroes 0 -1 1) "spiderman" 2) "batman
“lrange”命令接收起始索引和最后索引。-1表示显示到最后一条。第一个索引是0。输出结果从1开始时不要觉得困惑。
更多例子:
127.0.0.1:6379> rpush superheroes "the incredible hulk" catwoman (integer) 4 127.0.0.1:6379> rpop superheroes "catwoman" 127.0.0.1:6379> lpop superheroes "spiderman" 127.0.0.1:6379> lrange superheroes 0 -1 1) "batman" 2) "the incredible hulk"
它对数据结构操作的接口非常完整,它能够提供随机访问队列lists(使用lrange),后进先出栈stack(使用lpush/lpop),先进先出队列queue(使用lpush,rpop)或双端队列dequeue(对两端的push/pop)。
sets
对于item的无序集合,常常会选择sets。redis对于管理sets有着非常完整的命令:
127.0.0.1:6379> sadd primes 2 3 5 7 11 13 17 19 (integer) 8 127.0.0.1:6379> sadd integers_to_10 1 2 3 4 5 6 7 8 9 10 (integer) 10
举个例子,这里有两个sets。一个是不超过20的素数,另一个是1-10的整数。
现在,你可以做第一个测试—“sismember”命令:
127.0.0.1:6379> sismember primes 8 (integer) 0 127.0.0.1:6379> sismember primes 7 (integer) 1
找到不超过10的素数,我们可以使用求交集命令
127.0.0.1:6379> sinter primes integers_to_10 1) "2" 2) "3" 3) "5" 4) "7"
这个例子中我们很幸运,因为结果是排序的。但是通常情况下,sets是无序的,我们得到的结果可能是任意序列的。Redis也支持对sets排序,每个item对应一个分数,然后基于这个分数对sets排序。
总结
redis是一个多功能的数据库,拥有丰富的高级特性。它还有一个相对较新的产品配件来扩展它的能力,使它能够处理那些不能只在一个机器上处理的用例。那就花些时间学习并把它用到你的系统中吧。
作者简介:
Gigi Sayfan是Aclima一个负责软件架构的主管。Aclima是一个创业公司,负责设计和部署分布式传感器网络,提供高级别的环境意识。Gigi从事专业软件开发20多年了,涉及领域广泛,包括即时通讯、变形、芯片制造工艺控制、游戏控制台和嵌入式多媒体应用、脑启发机器学习、客户浏览器开发、3D分布式游戏平台的WEB服务和最近的物联网传感器。它每天写到产品中的编程语言包括C、C++、C#、Python、Java、Delphi、Javascript,甚至还有为操作系统(Windows3.11到windows7,Linux,Max OSX, 嵌入式Lynx和索尼游戏机)所写的Cobol和PowerBuilder。它的擅长的技术领域包括数据库、底层网络、分布式系统、非传统的用户接口和通用的软件开发生命周期。
相关文章推荐
- Redis优化之CPU充分利用
- java对redis的基本操作
- Redis安装
- 关于redis集群的一些事
- redis事务及锁应用
- Redis笔记
- redis notes
- Redis作缓存
- Redis的几点积累
- Jedis(redis的Java客户端开发包)
- 【转】Redis ttl 命令
- redis和mongodb工具类
- [Redis]通过代码配置Redis
- [Redis]如何通过Powershell创建Redis服务
- 深入剖析 redis 事件驱动
- Redis+Keepalived内存数据库集群配置
- Redis+Keepalived内存数据库集群配置
- 从hiredis使用出core谈谈redis多线程的使用【转】
- Redis bind用法
- Redis学习总结(JAVA篇)