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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
Django发送html邮件的方法
May 26 Python
python数据封装json格式数据
Mar 04 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python实现祝福弹窗效果
Apr 07 Python
用python打印1~20的整数实例讲解
Jul 01 Python
使用Python进行防病毒免杀解析
Dec 13 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 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
农民C键的运用技巧
2020/03/04 星际争霸
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
javascript 闭包详解
2015/02/15 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
js实现简单页面全屏
2019/09/17 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python实现126邮箱发送邮件
2020/05/20 Python
Python Map 函数的使用
2020/08/28 Python
年终总结会议主持词
2014/03/17 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
风之谷观后感
2015/06/11 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
从原生JavaScript到React深入理解
2022/07/23 Javascript