elasticsearch我爱编程

Redis的安装及学习

2017-09-22  本文已影响45人  何柯君

最近因为做Chatbot项目需要对于NoSQL数据库进行研究,调研范围包括MongoDB和Redis。本文将介绍Redis在Windows环境的安装及如何利用python来操作Redis数据库。

Redis基础

redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化。

Redis有5种数据类型:

Redis优点

Redis缺点

Redis注意事项:

Redis和MongoDB的区别:

Windows安装Redis

因为开发环境在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

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  # 删除引用,等待垃圾回收
上一篇 下一篇

猜你喜欢

热点阅读