redis入门教程

window平台下的redis dll文件下载:https://github.com/char101/phpredis/downloads

Redis 根据 5 种不同的数据类型来操作数据对象:

String(字符串)
Sets(集合)
zsets( 排序后的sets集合)
List(列表)
hash(哈稀)

操作 String 类型的值:

Command Parameters Description
SET key value Set a key to a string value
GET key Return the string value of the key
GETSET key value Set a key to a string returning the old value of the key
MGET key1 key2 ... keyN Multi-get, return the strings values of the keys
SETNX key value Set a key to a string value if the key does not exist
SETEX key time value Set+Expire combo command
MSET key1 value1 key2 value2 ... keyN valueN Set multiple keys to multiple values in a single atomic operation
MSETNX key1 value1 key2 value2 ... keyN valueN Set multiple keys to multiple values in a single atomic operation if none of the keys already exist
INCR key Increment the integer value of key
INCRBY key integer Increment the integer value of key by integer
DECR key Decrement the integer value of key
DECRBY key integer Decrement the integer value of key by integer
APPEND key value Append the specified string to the string stored at key
SUBSTR key start end Return a substring of a larger string

Continue reading

Redis作者谈Redis应用场景

毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对相似功能的数据库时,把精力放在怎么把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。

下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:

对于对Redis不懂的可以参考redis入门教程:http://blog.haohtml.com/archives/10174

1.取最新N个数据操作

比如典型的取你网站的最新文章,比如通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取

  • 使用LPUSH latest.comments<ID>命令,向list集合中插入数据
  • 插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
  • 然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码)
FUNCTION get_latest_comments(start,num_items):
    id_list = redis.lrange("latest.comments",start,start+num_items-1)
    IF id_list.length < num_items
        id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
    END
    RETURN id_list
END

如果你还有不同的筛选纬度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。 Continue reading

MongoDB vs Redis vs Tokyo Tyrant

* MongoDB vs Redis vs Tokyo Tyrant
准备对MongoDB, Redis以及Tokyo Tyrant的读写做一个简单的测试,为了进行相对公平的测试,需要了解他们背后的实现机制,下面是一些比较:

存储实现的比较:
* 内存文件映像(Memory-File Mapping) Redis, MongoDB
* 文件 + Cache Tokyo Tyrant
* 内存: Redis, Tokyo Tyrant
Key/Value索引形式:
* B+ Tree : MongoDB, Tokyo Tyrant
* Hash Table: Redis, Tokyo Tyrant
* Fixed Length: Tokyo Tyrant

从上面的比较可以看出,Redis和MongoDB是基于系统内存映像文件,数据能命中在内存的时候读写操作性能应该是非常强的,当然,反过来,如果数据十分分散不能在内存命中,那么内存页的切换开销将是非常可怕的,MongoDB和Redis数据文件不同的是将数据存放在多个文件中,每当上一个存满的时候就会创建新的数据空间文件。鉴于MongoDB 是主要比较对象,而其采用B+Tree进行存储,故TT也使用B+Tree引擎进行比较。 Continue reading

Redis vs Memcached

在用到一个新产品时,我们肯定会做的一件事就是做性能测试。但是你真的会做性能测试吗?说完这句话我开始遥想了一下当年。我当时肯定让我的领导有点失望。

回归正题,今天要说的是一个关于Redis性能测试的争论。

事情起因是一篇叫做Redis vs Memcached的文章,本文作者在听说Redis之后将其和Memcached进行了一组性能对比测试,测试结果Redis完败。然而其测试方法却引起了不小的争执,其博文下的第一篇回复就是Redis作者antirez同学的回复。antirez非常有风度的感谢了他的测试结果,然后指出其测试中的问题。

而后在antirez的一篇博文(On Redis, Memcached, Speed, Benchmarks and The Toilet)中,他指出了一些做性能测试方面的经验,并自己对Redis和Memcached做了性能对比。结果与上面的相反,Redis全胜。这一篇文章好像一个教程一样,让大家别再不懂装懂瞎做性能测试了。

然而此文后两天,antirez又发布了另一篇博文(An update on the Memcached/Redis benchmark),对其上篇文章中的内容进行了补充。

而正如Alex Popescu说的一样,性能测试一定要基于自己的实际情况,用自己的业务数据来进行测试,才是最靠谱的。
MongoDB vs Redis vs Tokyo Tyrant:http://blog.haohtml.com/archives/9995

Redis在Windows,linux平台下的安装配置

为了方便查阅资料,特将网上搜索到的Redis相关安装配置进行归档整理:

window平台Redis安装

下载地址: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload

Redis文件夹有以下几个文件

redis-server.exe:服务程序

redis-check-dump.exe:本地数据库检查

redis-check-aof.exe:更新日志检查

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).

指定redis的配置文件,如没有指定,则使用默认设置

解压目录:

d:\>redis-server.exe

redis-cli.exe:命令行客户端,测试用.windows下没有redis.conf配置文件.   Continue reading

Redis几个认识误区

此文的作者是新浪微博平台架构师杨卫华(timyang)大师,如果关注了新浪一些牛人微博的同学应该知道,timyang前段时间正在对Redis进行一些研究和测试,也分享出了不少成果。下面一篇文章相信是timyang这段时间对Redis研究的一个总结,澄清了一些认识上的误区,值得一读。

原文链接:http://timyang.net/data/redis-misunderstanding/

前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Service(1)概括的那几个范围,James第一条经验“Design for failure”是所有互联网架构成功的一个关键。互联网系统的工程理论其实非常简单,James paper中内容几乎称不上理论,而是多条实践经验分享,每个公司对这些经验的理解及执行力决定了架构成败。 Continue reading

Redis和memcached的关系和区别

Q1:什么是Redis?

http://code.google.com/p/redis/

一种新型open source NoSQL应用,从协议上看它提供高性能key-value以及集合操作等功能。它不仅仅是个cache产品,同时支持persistent和chain replication。

Q2:Redis与Memcached类似的地方

Redis是最类似Memcached的开源项目,也有很多的client库可供选择。

Q3:Redis与Memcached的区别

功能:

1. 从协议上看,Redis提供更多的数据结构和操作,如set, stack, range操作等。

2. Redis不仅仅是个cache,提供persistent和chain replication,加上#1,可以近似替代Memcached+MySQL

3. Memcached提供binary protocol和sasl协议,ms Redis还没有支持 Continue reading

初试redis,比memcached快10倍速

引用python中国某文章里的一段话:
"Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,
在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。
此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。"
初试redis,从某种意义上讲,memcached已经做的相当不错了。
但经同事介绍,知道了redis,redis的读写速度相当不错,并且可以定时或不定时的将内存中的数据备份到磁盘.真正做到了安全,快捷的目的。
下面我就将我的安装心得写出来,希望解占辉能帮助刚刚接触redis的朋友。
首先获取redis,我一般情况下python中国下载,那里LINUX主流软件基本都有。