redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedis.set方法)。Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。 简单说,官方推荐使用StrictRedis方法。
不推荐Redis类,原因是他和咱们在redis-cli操作有些不一样,主要不一样是下面这三个方面。
·LREM:参数 ‘num’ 和 ‘value’ 的顺序交换了一下,cli是 lrem queueName 0 ‘string’ 。 这里的0时所有的意思。 但是Redis这个类,把控制和string调换了。
·ZADD:实现时 score 和 value 的顺序不小心弄反了,后来有人用了,就这样了
·SETEX: time 和 value 的顺序反了
.Pool: 连接池
最近爬虫很是凶猛,标注下文章的原文地址: blog.xiaorui.cc
再就是连接池,很多人用Redis的原因是,以前的一些个博客的关于python redis的操作,基本用的时Redis的连接池方式。 其实StrictRedis也是支持的。
Redis的连接池的方法:
|
pool=redis.ConnectionPool(host='localhost',port=6379,db=0)
r=redis.Redis(connection_pool=pool)
|
StrictRedis的连接池的实现方式:
|
In[4]:pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
In[5]:r=redis.StrictRedis(connection_pool=pool)
|
看下官方的创建redis的时候,都可以添加什么参数。
|
classredis.StrictRedis(host='localhost',port=6379,db=0,password=None,socket_timeout=None,connection_pool=None,charset='utf-8',errors='strict',decode_responses=False,unix_socket_path=None)
Implementation of the Redis protocol.
This abstract classprovidesaPython interface to allRedis commandsandan implementation of the Redis protocol.
Connection andPipeline derive fromthis,implementing how the commandsare sent andreceived to the Redis server
|
另外的再说下redis的对于有些编码入库的问题,redis的连接附加的参数里面,默认编码是utf-8,但是如果你非要用GBK那就需要指明你的chardet和decode_responses为True 。
|
class redis.StrictRedis(host='localhost',port=6379,db=0,password=None,socket_timeout=None,connection_pool=None, charset='GBK ',errors='strict', decode_responses=True)
|
嗯,剩下的就没什么了 。以后要好好的看文档哈。
更新, 今天又遇到这问题了…
1
2
3
4
5
6
7
8
9
10
11
12
|
#xiaorui.cc
redis.zadd('timer_scheduler',json.dumps(urlbody),score)
File"/usr/local/lib/python2.7/site-packages/redis/client.py",line1574,inzadd
returnself.execute_command('ZADD',name,*pieces)
File"/usr/local/lib/python2.7/site-packages/redis/client.py",line565,inexecute_command
returnself.parse_response(connection,command_name,**options)
File"/usr/local/lib/python2.7/site-packages/redis/client.py",line577,inparse_response
response=connection.read_response()
File"/usr/local/lib/python2.7/site-packages/redis/connection.py",line574,inread_response
raiseresponse
ResponseError:value isnotavalid float
|
很明显,顺序不对… ResponseError: value is not a valid float ,字符串跟score反了…
转自:http://xiaorui.cc/2014/11/10/%E4%BD%BF%E7%94%A8redis-py%E7%9A%84%E4%B8%A4%E4%B8%AA%E7%B1%BBredis%E5%92%8Cstrictredis%E6%97%B6%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91/
分享到:
相关推荐
redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedis.set方法)。Redis是StrictRedis的子类,用于向后兼容旧...
redis-py代码本身非常精简(主要集中在client.py和connection.py这两个文件),该项目对redis-py中常用类,例如:StrictRedis,PubSub,Pipeline等能作详细注释,并且包含相应的使用方法 未完成部分: Redis前哨...
重做 Redis键值存储的Python接口。 安装 redis-py需要运行中的Redis服务器。 有关安装说明,请参见。 要安装redis-py,只需: $ sudo pip install redis ... redis-py公开了两个实现这些命令的客户端类。 StrictR
`redis-py`提供了`StrictRedis`和`Redis`两个类来实现Redis命令。`StrictRedis`遵循官方命令语法,而`Redis`类是为了兼容旧版本。例如,`SELECT`命令未实现,建议使用连接池的`db`参数来切换数据库;`DEL`命令使用`...
这个(很小的)模块提供了一个基于redis-py的“ StrictRedis”类的对象类,具有两个便捷方法(“ pset”和“ pget”),它们可以自动腌制和释放存储在内存缓存中的对象。 通过这种腌制,可以缓存复杂的Python对象...
redis-py 提供了两个类:Redis 和 StrictRedis,用于实现 Redis 的命令。StrictRedis 用于实现大部分官方的命令,并使用官方的语法和命令,Redis 是 StrictRedis 的子类,用于向后兼容旧版本的 redis-py。 连接方式...
`redis-py`提供了`Redis`和`StrictRedis`两个类,其中`StrictRedis`更符合Redis官方的命令语法。创建连接时,需要指定Redis服务器的主机名和端口号,例如: ```python import redis r = redis.StrictRedis(host='...