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 从远程服务器下载日志文件的程序
Feb 10 Python
python字符串排序方法
Aug 29 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python实现合并字典的方法
Jul 07 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
python time()的实例用法
Nov 03 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
详解Django中的form库的使用
2015/07/18 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python生成excel的实例代码
2017/11/08 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
九年级历史教学反思
2014/01/27 职场文书
电子工程求职信
2014/07/17 职场文书
爱的承诺书
2015/01/20 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
初中政治教学反思
2016/02/23 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
Python序列化模块JSON与Pickle
2022/06/05 Python