


























最近因为做Chatbot项目需要对于NoSQL数据库进行研究,调研范围包括MongoDB和Redis。本文将介绍Redis在Windows环境的安装及如何利用python来操作Redis数据库。
redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化。
Redis有5种数据类型:
Redis优点
Redis缺点
Redis注意事项:
Redis和MongoDB的区别:
因为开发环境在Windows下,因此还是选择在windwos环境下安装Redis。Redis官方并没有给出官网安装包,但有一个开源项目时跟进的,可以在其Github主页 上下载对应的安装包。
我下载的是3.0.53的包,新建目录“c:\redis”,解压缩安装包放在这个目录中。
然后输入命令就可以看到启动界面了:
c:\redis>redis-server.exe redis.windows.conf为了避免避免反复输入命令麻烦,可以直接注册成为windows服务:
c:\redis>redis-server --service-install redis.windows.conf --loglevel verbose
c:\redis>net start Redis安装完毕,再下载安装Redis Desktop Manager压压惊。

python操作Redis的方法非常多,也很好用,建议大家按照自己的需要查API进行使用。这里推荐一些教程:
下面我写了一个基于redis的封装接口,方便项目调用。
from __future__ import division, absolute_import
from myutils import configs, const, const_values
from myutils.check import check_func
import redis
import types
class RedisHelper(object):
__classname = "RedisHelper"
@check_func(__file__, __classname)
def __init__(self, **kwargs):
"""
这里做了一个外壳来包装redis,好处:
1.提供多重配置参数的输入,包括配置文件config读取等
2.方便Singleton的调用。这样速度可以保证内存永远有一个redis接口提供调用,更快。
:param kwargs:
"""
if "filename" in kwargs:
with configs.ConfigWrapper(kwargs.get("filename"), "read") as config:
sections = config.get_sections()
if kwargs.get("section", "NOTHING FOUND") not in sections:
raise Exception("Section not found: %s" % kwargs.get("section"))
para_dict = config.get_option_dict(kwargs.get("section"))
else:
para_dict = kwargs
_host="localhost" if "host" not in para_dict else para_dict.get("host")
_port = 6379 if "port" not in para_dict else int(para_dict.get("port"))
_db = 0 if "database" not in para_dict else int(para_dict.get("database"))
_pw = None if "password" not in para_dict else para_dict.get("password")
self.__cursor=redis.StrictRedis(host=_host,port=_port,db=_db,password=_pw)
@check_func(__file__,__classname)
def redis(self):
"""
返回reids接口
:return:
"""
return self.__cursor
@check_func(__file__, __classname)
def close(self):
"""
关闭,其实没有什么效果,redis本身支持线程池调度,连接的启动关闭有线程池管理,python接口无需关心。
The connection_pool object has a disconnect method to force
an immediate disconnect of all connections in the pool if necessary
:return:
"""
del self.__cursor # 删除引用,等待垃圾回收此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。