一、环境安装

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

python操作redis数据的更多相关文章

  1. python 操作redis数据

    python 操作redis 各种类型的数据 # encoding:utf-8 import redis import time def main(): """ redi ...

  2. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  3. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  4. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

  5. python——操作Redis

    在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...

  6. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  7. 数据库之redis篇(3)—— Python操作redis

    虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...

  8. python操作redis命令

    Python操作redis from redis import StrictRedis, ConnectionPoolredis_url="redis://:xxxx@112.27.10.1 ...

  9. Python操作Redis及连接方式

    前沿:随着互联网的高速发展,数据变得越来越重要,Python成为了人工智能的热门语言,而Nosql数据库已成为日常开发用品. 今天要写的是Python操作Redis Redis的安装我就不介绍了,你可 ...

随机推荐

  1. join(long)方法和sleep(long)方法的比较

    join(long)方法的源代码 public final synchronized void join(long millis) throws InterruptedException { long ...

  2. 算法竞赛模板 动态规划之背包DP

    ① 01背包 有n件物品和一个容量为v的背包.第i件物品的价值是c[i],体积是w[i].求解将哪些物品装入背包可使价值总和最大. 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放. ...

  3. 【sql】牛客网练习题 (共 61 题)

    [1]查找最晚入职员工的所有信息 CREATE TABLE `employees` ( `emp_no` ) NOT NULL, `birth_date` date NOT NULL, `first_ ...

  4. 有穷自动机(NFA、DFA)&正规文法&正规式之间的相互转化构造方法

    在编译原理(第三版清华大学出版社出版)中第三章的词法分析中,3.4.3.5.3.6小节中分别讲解了 1.什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机) 2.如何将  不确定的有穷自动机 ...

  5. shell脚本之用户管理

    #!/usr/bin/env bash ############################### # 脚本名称 : userManager.sh # # 脚本功能 : 账号管理 # # 脚本参数 ...

  6. Yii2 数据库Active Record(ORM)

    ACTIVE RECORD(ORM) 参考:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html namespace app\ ...

  7. luoguP2590 [ZJOI2008]树的统计 [树链剖分] [TLE的LCT]

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...

  8. 微信支付完成 vue 页面不跳转问题

    遇到的问题是 vue 调用微信支付 回调成功以后,页面路由不跳转. 解决的办法是用window.location.href /** * @method 支付费用方法 * @param data:后台返 ...

  9. windows API 创建系统托盘图标

    系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助. [cpp] view plaincopy #include <windows ...

  10. PAT_A1070#Mooncake

    Source: PAT A1070 Mooncake (25 分) Description: Mooncake is a Chinese bakery product traditionally ea ...