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控制台中实现进度条功能
Nov 10 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
Python理解递归的方法总结
Jan 28 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python字符串的一些操作方法总结
Jun 10 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Python数据可视化:泊松分布详解
Dec 07 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
浅析python中的del用法
Sep 02 Python
python 如何调用 dubbo 接口
Sep 24 Python
Python join()函数原理及使用方法
Nov 14 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
一个分页的论坛
2006/10/09 PHP
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Python中使用logging模块打印log日志详解
2015/04/05 Python
python调用摄像头显示图像的实例
2018/08/03 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
关于python 跨域处理方式详解
2020/03/28 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
简短证婚人证婚词
2014/01/09 职场文书
公司经理聘任书
2014/03/29 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
学生检讨书范文
2015/01/27 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
python爬取某网站原图作为壁纸
2021/06/02 Python