Python调用Redis的示例代码


Posted in Python onNovember 24, 2020
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# *************************************
# @Time  : 2019/8/12
# @Author : Zhang Fan
# @Desc  : Library
# @File  : MyRedis.py
# @Update : 2019/8/23
# *************************************
import redis


class MyRedis(object):
  """
  ===================================================================
  =====================    MyRedis    ========================
  ===================================================================
  """
  def __init__(self):
    self.redis_conn = None
    self.redis_db = None

  def connect_to_redis(self, redis_host, redis_port=6379, db=0, password=None):
    """
    连接到Redis服务器
    """
    self.redis_db = db
    print('Executing : Connect To Redis | host={0}, port={1}, db={2}, password={3}'
           .format(redis_host, redis_port, self.redis_db, password))
    try:
      self.redis_conn = redis.StrictRedis(
        host=redis_host, port=redis_port, db=self.redis_db, password=password)
    except Exception as ex:
      logger.error(str(ex))
      raise Exception(str(ex))

  def redis_key_should_be_exist(self, name):
    """
    验证redis存在指定键
    """
    if not self.redis_conn.exists(name):
      logger.error(("Redis of db%s doesn't exist in key [ %s ]." % (self.redis_db, name)))
      raise AssertionError

  def redis_key_should_not_be_exist(self, name):
    """
    验证redis不存在指定键
    """
    if self.redis_conn.exists(name):
      logger.error(("Redis of db%s exist in key [ %s ]." % (self.redis_db, name)))
      raise AssertionError

  def getkeys_from_redis_bypattern(self, pattern, field=None):
    """
    获取redis所有键值
    """
    keys_list = list()
    print('Executing : Getall Key | %s' % pattern)
    if field is None:
      return self.redis_conn.keys(pattern)
    else:
      keys = self.redis_conn.keys(pattern)
      for key in keys:
        if not self.redis_conn.hget(key, field) is None:
          keys_list.append(key)
      return keys_list

  # ========================== String Type =============================
  def get_from_redis(self, name):
    """
    获取redis数据
    """
    print('Executing : Get Key | %s' % name)
    return self.redis_conn.get(name)

  def del_from_redis(self, name):
    """
    删除redis中的任意数据类型
    """
    return self.redis_conn.delete(name)

  def set_to_redis(self, name, data, expire_time=0):
    """
    设置redis执行key的值
    """
    return self.redis_conn.set(name, data, expire_time)

  def append_to_redis(self, name, value):
    """
    添加数据到redis
    """
    return self.redis_conn.append(name, value)

    # ========================== Hash Type ==========================
  def hgetall_from_redis(self, name):
    """
    获取redis hash所有数据
    """
    print('Executing : Hgetall Key | %s' % name)
    return self.redis_conn.hgetall(name)

  def hget_from_redis(self, name, key):
    """
    获取redis hash指定key数据
    """
    print('Executing : Hget Key | %s' % name)
    return self.redis_conn.hget(name, key)

  def hset_to_redis(self, name, key, data):
    """
    设置redis指定key的值
    """
    print(('Executing : Hset Redis | name={0}, key={1}, data={2}'
           .format(name, key, data)))
    return self.redis_conn.hset(name, key, data)

  def hdel_to_redis(self, name, *keys):
    """
    删除redis指定key的值
    """
    print('Executing : Hdel Key | ', *keys)
    self.redis_conn.hdel(name, *keys)

  # ========================= ZSet Type ================================
  def get_from_redis_zscore(self, name, values):
    """
    获取name对应有序集合中 value 对应的分数
    """
    try:
      return int(self.redis_conn.zscore(name, values))
    except:
      return self.redis_conn.zscore(name, values)

  def get_from_redis_zrange(self, name, start=0, end=10):
    """
    按照索引范围获取name对应的有序集合的元素
    """
    return self.redis_conn.zrange(name, start, end, desc=False, withscores=True, score_cast_func=int)

  def del_from_redis_zrem(self, name, values):
    """
    删除name对应的有序集合中值是values的成员
    """
    return self.redis_conn.zrem(name, values)

  def add_from_redis_zadd(self, name, value, score):
    """
    在name对应的有序集合中添加一条。若值存在,则修改对应分数。
    """
    return self.redis_conn.zadd(name, {value: score})

  def count_from_redis_zcard(self, name):
    """
    获取name对应的有序集合元素的数量
    """
    return self.redis_conn.zcard(name)


if __name__ == '__main__':
  print('This is test.')
  mr = MyRedis()

以上就是Python调用Redis的示例代码的详细内容,更多关于Python调用Redis的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
Python3计算三角形的面积代码
Dec 18 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
python实现简单登陆系统
Oct 18 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
基于django和dropzone.js实现上传文件
Nov 24 #Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 #Python
Django web自定义通用权限控制实现方法
Nov 24 #Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 #Python
Pycharm安装python库的方法
Nov 24 #Python
python opencv角点检测连线功能的实现代码
Nov 24 #Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 #Python
You might like
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
html如何对span设置宽度
2019/10/30 HTML / CSS
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
外贸英语专业求职信范文
2013/12/25 职场文书
物流业务员岗位职责
2014/02/08 职场文书
股权转让协议书
2014/12/07 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
转正申请报告格式
2015/05/15 职场文书
在职证明格式样本
2015/06/15 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Python基础学习之奇异的GUI对话框
2021/05/27 Python