#!/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的更多相关文章

  1. Python 调用 Redis API

    安装Redis包 在\Python27\Scripts目录下执行 pip install redis Python操作Redis __author__ = 'Edward' import redis ...

  2. python 调用redis

    #!/usr/bin/env python #_*_ coding:UTF-8 _*_ import redis import pickle #普通连接 ''' db="db1" ...

  3. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  4. python之redis和memcache操作

    Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...

  5. python——操作Redis

    在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...

  6. 【python】Redis介绍及简单使用

    一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...

  7. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  8. Python 基于python操纵redis入门介绍

    基于python操纵redis入门介绍 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ...

  9. python对redis的常用操作 上 (对列表、字符串、散列结构操作)

    这里的一切讨论均基于python的redis-py库. 安装使用: pip install redis 然后去获取一个redis客户端: redis_conn = redis.Redis(host=R ...

随机推荐

  1. 深入学习socket网络编程,以java语言为例

    了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...

  2. 你不知道的JavaScript(中)读书笔记(一)

    第一章 1.内置类型 JavaScript有七种内置类型[除了对象以外,其他统称为“基本类型”]: 空值(null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符 ...

  3. Django 之day02,必会知识点

    静态文件配置******* 为什么用户在浏览器中输入的网址能够访问到对应的资源, 前提是后端提前开设该资源的访问,在urls.py文件中进行配置该路由, 如果我的后端没有开设相关的资源,用户是无法访问 ...

  4. Redis Cluster 的数据分片机制

    上一篇<分布式数据缓存中的一致性哈希算法> 文章中讲述了一致性哈希算法的基本原理和实现,今天就以 Redis Cluster 为例,详细讲解一下分布式数据缓存中的数据分片,上线下线时数据迁 ...

  5. ELK查询命令详解

    目录 ELK查询命令详解 倒排索引 使用ElasticSearch API 实现CRUD 批量获取文档 使用Bulk API 实现批量操作 版本控制 什么是Mapping? 基本查询(Query查询) ...

  6. Spring Boot 部署浅析(jar or war)

    对于传统的 ssm 或者 ssh 项目的部署,一般会打包成war包,或者是一个编译好的文件夹,再放到 tomcat 的 webapps 目录下,如果是 war 包,会自动解压出来.而 Spring B ...

  7. WPF 3D足球导览

    根据博文:https://www.cnblogs.com/duel/p/regular3dpoints.html获取足球的3D坐标后,在每一个坐标位置创建一个ModelVisual3D元素,既能实现炫 ...

  8. idea常用快捷键大全

    Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找. 编写代码 Ctrl+Shift + Enter,语句完成. “!”,否定完成,输入表达式时按 “!”键. Ctrl+E,最近的文件. Ct ...

  9. Zuul Swagger 整合

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

  10. 在 .NET Core 3.0 中支持 Newtonsoft.Json 的使用

    .NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: Syst ...