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 相关文章推荐
python中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
如何高效使用Python字典的方法详解
Aug 31 Python
python配置grpc环境
Jan 01 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
python如何制作缩略图
Apr 30 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
Django之路由层的实现
Sep 09 Python
Python模块汇总(常用第三方库)
Oct 07 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
Python变量格式化输出实现原理解析
Aug 06 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错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
JavaScript 常用函数
2009/12/30 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Python 初始化多维数组代码
2008/09/06 Python
python通过文件头判断文件类型
2015/10/30 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
快速创建python 虚拟环境
2020/11/28 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
模具专业推荐信
2013/10/30 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
工程管理专业毕业生自荐信
2014/01/24 职场文书
小学新学期寄语
2014/04/02 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
python 中的@运算符使用
2021/05/26 Python