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...
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...
学习笔记: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)
...
学习笔记:Redis入门之数据类型 —— ZSET
ZSET,即 Sorted-Sets,和 SETS 类型相似,它们都是字符串的集合。它们之间的主要差别是 Sorted-Sets 中的每一个成员都会有一个分数(score)与之关联,Redis 正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管 Sorted-Sets 中的成员必须是唯一的,但是分数(score)却是可以重复的。
在 Sorted-Set 中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于 Sorted-Sets 中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。
...
学习笔记:Redis入门之数据类型 —— HASHES
HASH 类似于 Python 中的字典,其基本使用也非常简单:HMSET 是 HSET 的升级版,支持一次传入多个键/值对True
>>> conn.hmget('hash-key', ['k2', 'k3'])
['v2', 'v3']3
>>> conn.hdel('hash-key', 'k1', 'k3')
True
>>&g...
学习笔记:Redis入门之数据类型 —— SET
SET 和 LIST 很类似,而他们最明显的区别就是 SET 中所有的元素都是唯一的,并且 SET 具有无序性。基本操作:3
>>> conn.srem('set-key', 'c', 'd')
True
>>> conn.srem('set-key', 'c', 'd')
FalseSCARD 可以统计 SET 中的元素个数2SMEMBERS 返回 SET 中的所有元素,这里返回的结果为 ...
学习笔记:Redis入门之数据类型 —— LIST
LIST 就是有序的列表,可以从左侧或者右侧插入/弹出值,通过偏移量获取特定的元素等功能。以下是基本操作:推入元素:1L
>>> conn.lpush('list-key', 'first')
2L
>>> conn.rpush('list-key', 'new last')
3L获取子列表:>>> conn.lrange('list-key', 0, -1)弹出元素:...
学习笔记: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...