python操作redis数据

一、环境安装

1、redispy安装

(automatic) C:\Users\Administrator>pip install redis

2、检测是否安装成功

(automatic) C:\Users\Administrator>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>>

二、python操作redis

1、创建基类

主要用于连接数据库、数据库单例:

import redis

class RedisBase:

    def __new__(cls, *args, **kwargs):
        """单例模式"""
        if not hasattr(cls, "instance"):
            cls.instance = super(RedisBase, cls).__new__(cls, *args, **kwargs)
        return cls.instance

    def __init__(self):
        """每一个数据库实例管理一个连接池"""
        pool = redis.ConnectionPool(host=‘192.168.0.104‘,port=6379,db=0,password=‘xxx‘)
        self.r=redis.Redis(connection_pool=pool)

2、String操作

class RedisString(RedisBase):

    def set(self):
        """设置值"""
        result=self.r.set(‘widh‘,58)
        return result

    def get(self):
        """获取值"""
        result=self.r.get(‘width‘)
        return result

    def mset(self):
        """设置多个键值对"""
        result=self.r.mset(
            {
                ‘salary1‘:5000,
                ‘salary2‘:6000
            }
        )
        return result

    def mget(self):
        """获取多个值"""
        result=self.r.mget(
            [
                ‘salary1‘,
                ‘salary2‘
            ]
        )
        return result

    def delete(self):
        """删除键值"""
        result=self.r.delete(‘salary1‘)
        return result

    def incr(self):
        result=self.r.incr(‘salary1‘,20)
        return result

2、List操作

class RedisList(RedisBase):

    def lpush(self):
        result=self.r.lpush(
            ‘l1‘,*[1,2,3,4,5]
        )
        return result

    def lpop(self):
        """移除最左边的数据并返回"""
        result=self.r.lpop(‘l1‘)
        return result

    def lrange(self):
        """获取指定长度的数据"""
        result=self.r.lrange(‘l1‘,0,-1)
        return result

3、Set操作

class RedisSet(RedisBase):

    def sadd(self):
        """添加集合,返回的是成员的个数"""
        result=self.r.sadd(‘set1‘,*[1,2,3,4,5])
        return result

    def sismember(self):
        """判断一个成员是否是集合的成员,返回布尔值"""
        result=self.r.sismember(‘set1‘,2)
        return result

    def smembers(self):
        """返回集合的所有成员"""
        result=self.r.smembers(‘set1‘)
        return result

    def sdiff(self):
        """返回与其它集合的差异元素"""
        result=self.r.sdiff(‘s5‘,‘s7‘)
        return result

    def sinder(self):
        """返回几个集合的交集"""
        result=self.r.sinter(‘s5‘,‘s7‘)
        return result

    def sunion(self):
        """返回几个集合的并集"""
        result=self.r.sunion(‘s5‘,‘s7‘)
        return result

4、完整实例

import redis

class RedisBase:

    def __new__(cls, *args, **kwargs):
        """单例模式"""
        if not hasattr(cls, "instance"):
            cls.instance = super(RedisBase, cls).__new__(cls, *args, **kwargs)
        return cls.instance

    def __init__(self):
        """每一个数据库实例管理一个连接池"""
        pool = redis.ConnectionPool(host=‘192.168.0.104‘,port=6379,db=0,password=‘bright123‘)
        self.r=redis.Redis(connection_pool=pool)

class RedisString(RedisBase):

    def set(self):
        """设置值"""
        result=self.r.set(‘widh‘,58)
        return result

    def get(self):
        """获取值"""
        result=self.r.get(‘width‘)
        return result

    def mset(self):
        """设置多个键值对"""
        result=self.r.mset(
            {
                ‘salary1‘:5000,
                ‘salary2‘:6000
            }
        )
        return result

    def mget(self):
        """获取多个值"""
        result=self.r.mget(
            [
                ‘salary1‘,
                ‘salary2‘
            ]
        )
        return result

    def delete(self):
        """删除键值"""
        result=self.r.delete(‘salary1‘)
        return result

    def incr(self):
        result=self.r.incr(‘salary1‘,20)
        return result

class RedisList(RedisBase):

    def lpush(self):
        result=self.r.lpush(
            ‘l1‘,*[1,2,3,4,5]
        )
        return result

    def lpop(self):
        """移除最左边的数据并返回"""
        result=self.r.lpop(‘l1‘)
        return result

    def lrange(self):
        """获取指定长度的数据"""
        result=self.r.lrange(‘l1‘,0,-1)
        return result

class RedisSet(RedisBase):

    def sadd(self):
        """添加集合,返回的是成员的个数"""
        result=self.r.sadd(‘set1‘,*[1,2,3,4,5])
        return result

    def sismember(self):
        """判断一个成员是否是集合的成员,返回布尔值"""
        result=self.r.sismember(‘set1‘,2)
        return result

    def smembers(self):
        """返回集合的所有成员"""
        result=self.r.smembers(‘set1‘)
        return result

    def sdiff(self):
        """返回与其它集合的差异元素"""
        result=self.r.sdiff(‘s5‘,‘s7‘)
        return result

    def sinder(self):
        """返回几个集合的交集"""
        result=self.r.sinter(‘s5‘,‘s7‘)
        return result

    def sunion(self):
        """返回几个集合的并集"""
        result=self.r.sunion(‘s5‘,‘s7‘)
        return result

def main():
    rs=RedisString()
    rs1=RedisString()
    rl=RedisList()
    rl1=RedisList()
    rs=RedisSet()
    rs1=RedisSet()
    print(rs)
    print(rs1)
    print(rl)
    print(rl1)
    print(rs)
    print(rs1)
    # rs.set()
    # rs.mset()
    # print( rs.mget())
    # print(rs.delete())
    # print(rs.incr())
    # print(rl.lpush())
    # print(rl.lpop())
    # print(rl.lrange())
    # print(rs.sadd())
    # print(rs1.sismember())
    # print(rs.smembers())
    # print(rs.sdiff())
    # print(rs.sinder())
    print(rs.sunion())

if __name__ == ‘__main__‘:
    main()

实例

更多参考:

https://redis-py.readthedocs.io/en/latest/#contents

https://github.com/WoLpH/redis-py

三、Pipelines

  pipline 是Redis类的子类,它为在单个请求中向服务器缓冲多个命令提供支持。

  redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。

import redis

pool = redis.ConnectionPool(host=‘192.168.0.104‘,port=6379,db=0,password=‘xxx‘)

r = redis.Redis(connection_pool=pool)

pipe = r.pipeline()#默认事务开启,具备原子性

pipe.set(‘rr1‘, ‘v1‘)
pipe.set(‘rr2‘, ‘v2‘)

pipe.execute()

更多参考:https://github.com/WoLpH/redis-py

原文地址:https://www.cnblogs.com/shenjianping/p/11185407.html

时间: 2024-10-05 05:02:12

python操作redis数据的相关文章

Python—操作redis

Python操作redis 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'zhangsan') '''参数: set(name, value, ex=None, px=None, nx=False, xx=False) ex,过期时间(秒) px,过期时间(毫秒) nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setn

Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含string(字符串).hash(哈希).list(链表).set(集合)和zset(有序集合),这些数据类型都支持push/pop.add/remove及取交集和并集及更丰富的操作,redis支持各种不同方式的排序.为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改

python 操作 redis

一.简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的

Python 操作Redis

redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性

Linux 下的python操作redis

Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性

使用Python操作Redis详解

之前的五天,过了个愉快的周末,然后将公司AbaseDump的调度部分代码看懂并且在此之上完成了OnlyDump的功能代码,代码不可以公开,今天完工,明天测试,晚上来总结一下这几天学到的一点应用. 使用Python操作Redis详解 ------------------------------------------------------------------------------------------------- 一. 文档说明 本文档仅介绍Redis在Python中的使用,Redis

Redis 以及 Python操作Redis

Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. -- Redis支持五种数据类型. -- Redis支持数据库备份. Redis的优势: -- Redis性能极高,读的速度是110000次/s,写的速度是81000次/s. -- Redis丰富的数据类型,String,Lists,Hashes,Sets以及Ordered S

使用python操作redis(管道)

一.redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py. redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用.如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接. 安装redis pip install re

Python学习之使用Python操作Redis数据库

最近在写一个检查一台服务器上所有游戏区服配置文件中redis某个key值大小的脚本,本打算使用shell+awk+sed的方式去解决这个问题,但是由于redis的配置信息是php数组形式.shell脚本一时没有写出来,就请教他人帮忙写了个python脚本,但是自己python不是很精通,于是按照脚本中涉及到的python知识现学现用,然后根据自己的需求更改脚本.这里分享一下如何使用python操作redis数据库. Redis的Python驱动源码下载地址是https://github.com/