python 操作Redis数据库

来源:互联网 发布:微信群一键加好友软件 编辑:程序博客网 时间:2024/06/05 17:50

一、Redis数据库介绍

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点:

  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  3. Redis支持数据的备份,即master-slave模式的数据备份。

二、安装及配置

官网:https://redis.io/
中文网站: http://www.redis.cn/
windows用户从这里下载: https://github.com/MSOpenTech/redis/releases
其他的系统均可以在官网中找到。

三、图形化管理工具

RedisDesktopManager是一款Redis可视化的软件。
官网: https://redisdesktop.com/
Github: https://github.com/uglide/RedisDesktopManager
下载地址:https://redisdesktop.com/download
使用帮助: http://docs.redisdesktop.com/en/latest/

这里写图片描述

四、Redis 数据类型以及相关操作

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

五、python 操作Redis

1. redispy 安装
PyPI: https://pypi.python.org/pypi/redis
Github: https://github.com/andymccurdy/redis-py

文档: http://redis-py.readthedocs.io/en/latest/

PS: 最简单通过pip安装, pip install redis

2. redis-python代码示例(字符串和列表)

# coding=utf-8import redisclass TestString(object):    """    set -- 设置值    get -- 获取值    mset -- 设置多个键值对    append -- 添加字符串    del -- 删除    incr/decr -- 增加/减少 1    """    def __init__(self):        self.r = redis.StrictRedis(host='localhost', port=6379, db=0)    def test_set(self):        """使用set设置值"""        result = self.r.set('programing_language', 'python')        return result    def test_get(self):        """使用get获取值"""        result = self.r.get('programing_language')        return result    def test_mset(self):        """使用mset设置多个键值对"""        d = {            'name1': 'wei',            'name2': 'yang'        }        result = self.r.mset(d)        return result    def test_mget(self):        """使用mget获取多个键值对"""        l = ['name1', 'name2']        result = self.r.mget(l)        return result    def test_del(self):        result = self.r.delete('name2')        return resultclass TestList(object):    """    lpush/rpush -- 从左/右插入数据    lrange -- 获取一定长度的数据    ltrim -- 截取一定长度的数据    lpop/rpop -- 移除最左/右的元素返回    lpushx/rpushx -- key存在的时候才插入数据,不存在的时候不做插入处理    """    def __init__(self):        self.r = redis.StrictRedis(host='localhost', port=6379, db=0)    def test_push(self):        t = ('wei', 'hai')        result = self.r.lpush('l_eat', *t)        print result        result = self.r.lrange('l_eat', 0, -1)        print result    def test_pop(self):        result = self.r.lpop('l_eat')        print result        result = self.r.lrange('l_eat', 0, -1)        print resultdef main():    str_obj = TestString()    # str_obj.test_set()    print str_obj.test_get()    # print str_obj.test_mset()    print str_obj.test_mget()    # print str_obj.test_del()    list_obj = TestList()    # list_obj.test_push()    list_obj.test_pop()if __name__ == '__main__':    main()
原创粉丝点击