Radis

概述

1.Redis不会尝试去解决关于数据的所有事情。
2.值(Values)是一段任意的字节序列,Redis不会关注它们实质上是什么,Redis不允许你通过值来进行查询。(PS:印证了第一点)
3.对于那些值与值间的索引和引用,我们都必须手动的去管理
4.每一个Redis命令都具有原子性,包括那些一次处理多项事情的命令。此外,对于使用多个命令,Redis支持事务功能。Redis实际上是单线程运行的。
5.实例:

redis.multi()
current = redis.get('powerlevel')
redis.set('powerlevel', current + 1)
redis.exec()

虽然Redis是单线程运行的,但是我们可以同时运行多个Redis客户端进程,常见的并发问题还是会出现。像上面的代码,在get运行之后,set运行之前,powerlevel的值可能会被另一个Redis客户端给改变,从而造成错误

redis.watch('powerlevel')
current = redis.get('powerlevel')
redis.multi()
redis.set('powerlevel', current + 1)
redis.exec()

在我们调用watch后,如果另一个客户端改变了powerlevel的值,我们的事务将会运行失败。如果没有客户端改变powerlevel的值,那么事务会继续工作。我们可以在一个循环里运行这些代码,直到其能正常工作。

6.复制功能(Replication)是一个成长中的网站可以利用的第一个工具。有一些命令会比另外一些来的昂贵(例如sort命令),将这些运行载荷转移到一个Slave实例里,可以保持整体系统对于查询的快速响应。(找出系统瓶颈,分布式解决)

7.不仅提供水平缩放(包括均衡),为了高可用性,还提供了自动故障恢复。

8.基本数据结构
字符串(Strings)
其实不只是字符串,也可以是Java序列化的对象等东西。最最常用的一种结构了。甚至是很多人理解中的Redis。
散列(Hashes)
与java中的hase类似,散列数据结构提供了一个额外的间接层:一个域(Field)。因此,散列数据结构中的set和get是:
hset users:goku powerlevel 9000
hget users:goku powerlevel

上面例子中,hash是goku,域是powerlevel 9000。二维的一个扩展。

列表(Lists)
这个与常用的list概念基本一样,对头部,尾部的操作非常高效。此外“ltrim命令的具体构成是LTRIM Key start stop。要理解ltrim命令,首先要明白Key所存储的值是一个列表,理论上列表可以存放任意个值。对于指定的列表,根据所提供的两个范围参数start和stop,ltrim命令会将指定范围外的值都删除掉,只留下范围内的值。”

集合(Sets)
可以判断一个set里面是否有一个value,还有个操作,可以找出两个set中的的交集。微博中的共同好友。

分类集合(Sorted Sets)
“最强大的数据结构”,提供排序和rank的功能。
zadd friends:duncan 70 ghanima 95 paul 95 chani 75 jessica 1 vladimir
对于duncan的朋友,要怎样计算出标记(score)为90或更高的人数?
zcount friends:duncan 90 100
如何获取chani在名单里的秩(rank)?
zrevrank friends:duncan chani

zrank命令的具体构成是ZRANK Key menber,要知道Key存储的Sorted Set默认是根据Score对各个menber进行升序的排列,该命令就是用来获取menber在该排列里的次序,这就是所谓的秩。)

9.使用场景

为什么这么快
1)内存中运行
2)数据结构
Redis中的数据结构很多功能是没有的,“裁剪”部分“常见”的功能,例如根据值进行查询。之所以“常见”带个引号,表示这是个常见的误区,很多产品大而全

10.应用案例
最先想到的就是新浪微博,radis集群。具体待完善。

基本用法(TODO)
分布式特性(TODO)
与消息队列区别(TODO)
性能测试(TODO)

参考:http://wiki.jikexueyuan.com/project/the-little-redis-book/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值