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 26进制计算实现方法
May 28 Python
Djang中静态文件配置方法
Jul 30 Python
Python聚类算法之基本K均值实例详解
Nov 20 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Python基础之getpass模块详细介绍
Aug 10 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
python机器人运动范围问题的解答
Apr 29 Python
python 实现生成均匀分布的点
Dec 05 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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
关于js与php互相传值的介绍
2013/06/25 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
进一步探究Python中的正则表达式
2015/04/28 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
python Opencv将图片转为字符画
2021/02/19 Python
tornado+celery的简单使用详解
2019/12/21 Python
Django封装交互接口代码
2020/07/12 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
大整数数相乘的问题
2012/07/22 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
房屋改造计划书
2014/01/10 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
介绍信怎么写
2015/01/30 职场文书
英文商务邀请函范文
2015/01/31 职场文书
通知的格式范文
2015/04/27 职场文书