BLOG
Enjoy when you can, and endure when you must.
NOV 12, 2013/数据库
Redis学习:IP查询(二)
本文部分翻译自《Redis in Action》(Josiah L Carlson)。之前,我们利用ZSET建立了一张城市ID与起始IP地址的对应表。要查询一个IP,我们首先需要使用与之前一样的办法,即将IP转换为10进制整数。之后找到比该IP值相等或较小的最大起始IP。之前已经提到,之所以用到ZSET,就是方便这里的查询。即我们可以利用ZREVRANGEBYSCORE,通过传递START=0,NUM=1,从而实现预想的查询方法。正确获取城市ID后,我们再利用ID到城市ID与信息映射表(HASH)中查询到对应的城市信息。具体的实现代码如下:def find_city_by_ip...
NOV 12, 2013/数据库
Redis学习:IP查询(一)
本文部分翻译自《Redis in Action》(Josiah L Carlson)。利用IP定位用户以提供地方化的服务是目前Web的常用做法。使用Redis,我们可以很方便的实现该功能。对于开发,我们可以从http://dev.maxmind.com/geoip/geolite下载免费的IP数据库。这个数据库包含两个重要的文件:Geo-LiteCity-Blocks.csv和GeoLiteCity-Location.csv,分别为IP段与城市ID的映射以及ID所对应的城市信息(如市、区/周/省、国家名称等)。我们可以建立两张表,分别对应以上两个csv文件。第一张表,我们可以将其放入ZS...
OCT 18, 2013/数据库
学习笔记:Redis入门之事务
首先来看下面的例子: ... print conn.incr('notrans:') ... time.sleep(.1) ... conn.incr('notrans:', -1) ... >>> if 1: ... for i in xrange(3): ... threading.Thread(target=notrans).start() ... time.sleep(.5) ...
OCT 17, 2013/数据库
学习笔记:Redis入门之数据类型 —— ZSET
ZSET,即 Sorted-Sets,和 SETS 类型相似,它们都是字符串的集合。它们之间的主要差别是 Sorted-Sets 中的每一个成员都会有一个分数(score)与之关联,Redis 正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管 Sorted-Sets 中的成员必须是唯一的,但是分数(score)却是可以重复的。 在 Sorted-Set 中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于 Sorted-Sets 中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。 ...
OCT 17, 2013/数据库
学习笔记:Redis入门之数据类型 —— HASHES
HASH 类似于 Python 中的字典,其基本使用也非常简单:HMSET 是 HSET 的升级版,支持一次传入多个键/值对True >>> conn.hmget('hash-key', ['k2', 'k3']) ['v2', 'v3']3 >>> conn.hdel('hash-key', 'k1', 'k3') True >>&g...
OCT 17, 2013/数据库
学习笔记:Redis入门之数据类型 —— SET
SET 和 LIST 很类似,而他们最明显的区别就是 SET 中所有的元素都是唯一的,并且 SET 具有无序性。基本操作:3 >>> conn.srem('set-key', 'c', 'd') True >>> conn.srem('set-key', 'c', 'd') FalseSCARD 可以统计 SET 中的元素个数2SMEMBERS 返回 SET 中的所有元素,这里返回的结果为 ...
OCT 17, 2013/数据库
学习笔记:Redis入门之数据类型 —— LIST
LIST 就是有序的列表,可以从左侧或者右侧插入/弹出值,通过偏移量获取特定的元素等功能。以下是基本操作:推入元素:1L >>> conn.lpush('list-key', 'first') 2L >>> conn.rpush('list-key', 'new last') 3L获取子列表:>>> conn.lrange('list-key', 0, -1)弹出元素:...
OCT 17, 2013/数据库
学习笔记:Redis入门之数据类型 —— STRING
通过默认方式与 Redis 建立连接:>>> conn = redis.Redis()基本的字符串操作:True >>> conn.get('key-str') 'Hello World!'尝试获取一个不存在的 key 会返回 None(控制台不会打印出来)>>> conn.get('key-none')Redis 的加/减操作:如果一个变量的值可以被解析成10进制数或浮点数,则可以对它使用 INCR* 和 DECR* 操作...
Redis安装出错解决
今天在CentOS5上安装Redis2.6时遇到如下问题: /root/redis-2.6.4/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4' collect2: ld returned 1 exit status make[1]: *** [redis-server] Error 1 make[1]: Leaving directory&...
十五分钟介绍 Redis 数据结构
全文转载自:http://blog.1001i.com/computer/redis/introduce-redis  本文翻译自Redis的一篇官方文档:A fifteen minute introduction to Redis data types你也许已经知道Redis并不是简单的 key-value 存储,实际上他是一个数据结构服务器,支持不同类型的值。也就是说,你不必仅仅把字符串当作键值。下列这些数据类型都可作为值类型。· 二进制安全的 字符串 string· 二进制安全的 字符串列表 list of string· 二进制安全的 字符串集合 set of stri...
< 1 2