python与redis的事
1. redis安装
1.1 windows下安装
下载地址:https://github.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey
1.2 linux下安装
下载地址:http://redis.io/download,下载最新文档版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
$ cd src
$ ./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server redis.conf
redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。
2. redis类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
2.1 string类型
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
redis 127.0.0.1:6379> SET name "tencent:qzone"
OK
redis 127.0.0.1:6379> GET name
"tencent:qzone"
2.2 哈希
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
存入字符串类型
127.0.0.1:6379> HMSET tencent:qzone:hash username 'qq' password 'qq_pwd'
OK
127.0.0.1:6379> HGETALL tencent:qzone:hash
1) "username"
2) "qq"
3) "password"
4) "qq_pwd"
存入字典类型
127.0.0.1:6379> hgetall database:scope
1) "www.example.com"
2) "{\"url\": \"www.example.com\", \"term\": \"\\u8f7b\\u8f7b\\u7684\\u6211\\u8d70\\u4e86\", \"score\": 9}"
3) "www.sina.com"
4) "{\"url\": \"www.sina.com\", \"term\": \"\\u6b63\\u5982\\u6211\\u8f7b\\u8f7b\\u7684\\u6765\", \"score\": 10}"
5) "www.baidu.com"
6) "{\"url\": \"www.baidu.com\", \"term\": \"\\u4e0d\\u5e26\\u8d70\\u4e00\\u7247\\u4e91\\u5f69\", \"score\": 9.5}"
7) "www.etl.com"
8) "{\"url\": \"www.etl.com\", \"term\": \"\\u6211\\u6325\\u4e00\\u6325\\u8863\\u8896\", \"score\": 8.5}"
HEXISTS key field
查看哈希表 key 中,指定的字段是否存在。
HGET key field
获取存储在哈希表中指定字段的值。
HGETALL key
获取在哈希表中指定 key 的所有字段和值
HKEYS key
获取所有哈希表中的字段
HLEN key
获取哈希表中字段的数量
每个 hash 可以存储 232 -1 键值对(40多亿)。
2.3 List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
redis 127.0.0.1:6379> lpush tencent_wb redis
(integer) 1
redis 127.0.0.1:6379> lpush tencent_wb mongodb
(integer) 2
redis 127.0.0.1:6379> lpush tencent_wb rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange tencent_wb 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
LPOP key
移出并获取列表的第一个元素
LLEN key
获取列表长度
LRANGE key start stop
获取列表指定范围内的元素
LREM key count value
移除列表元素
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
2.4 Set(集合)
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
redis 127.0.0.1:6379> sadd tencent_wb:set redis
(integer) 1
redis 127.0.0.1:6379> sadd tencent_wb:set mongodb
(integer) 1
redis 127.0.0.1:6379> smembers tencent_wb:set
2) "mongodb"
3) "redis"
SCARD key
获取集合的成员数
SDIFFSTORE destination key1 [key2]
返回给定所有集合的差集并存储在 destination 中
SMEMBERS key
返回集合中的所有成员
2.5 zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
添加:
zadd key score member
查看
zrange key 0 -1
ZCARD key
获取有序集合的成员数
ZREM key member [member …]
移除有序集合中的一个或多个成员
ZINTERSTORE destination numkeys key [key …]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员
ZUNIONSTORE destination numkeys key [key …]
计算给定的一个或多个有序集的并集,并存储在新的 key 中
2.6 键(key)
del key
删除key
EXISTS key
检查给定 key 是否存在。
DUMP key
序列化给定 key ,并返回被序列化的值。
EXPIRE key seconds
为给定 key 设置过期时间。
KEYS pattern
查找所有符合给定模式( pattern)的 key 。
TYPE key
返回 key 所储存的值的类型。
RENAMENX key newkey
仅当 newkey 不存在时,将 key 改名为 newkey 。
3 python操作redis
3.1 python连接redis
def redis_connect():
try:
#不带密码连接
# redis_conn = redis.Redis(host='192.168.8.25',port=6379,db=0)
#带密码连接
redis_conn = redis.StrictRedis(host='192.168.8.25', port=6379, password='npq8pprjxnppn477xssn',db=0)
except:
print "connect redis error"
redis_conn = 0
return redis_conn
3.2 python 操作list 入队
def push_redis_list_tmp(redis_conn,redis_list_name,value):
try:
redis_conn.rpush(redis_list_name,value)
except:
redis_conn = redis_connect()
3.2 python 操作list 出队
def pop_redis_list(redis_conn,redis_list_name):
try:
qq = redis_conn.lpop(redis_list_name)
except:
print "pop faild"
qq = None
return qq
3.3 python操作hash zset操作,新增值
item = {"url":'www.example.com', "score":9.5, "term": "abcdefgh"}
def add_item(self,item):
#新增到哈希set
self.rds.hset (self.database, item.get('url'), simplejson.dumps(item))
#新增到有序集合
for prefix in self.prefixs_for_term(item['term']):
self.rds.zadd(self.get_key(prefix),item.get('url'),item.get('score',0))
- 加粗
Ctrl + B
- 斜体
Ctrl + I
- 引用
Ctrl + Q
- 插入链接
Ctrl + L
- 插入代码
Ctrl + K
- 插入图片
Ctrl + G
- 提升标题
Ctrl + H
- 有序列表
Ctrl + O
- 无序列表
Ctrl + U
- 横线
Ctrl + R
- 撤销
Ctrl + Z
- 重做
Ctrl + Y