前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis的安装和使用(python篇)

redis的安装和使用(python篇)

原创
作者头像
languageX
发布2021-09-01 18:42:52
2.1K0
发布2021-09-01 18:42:52
举报
文章被收录于专栏:计算机视觉CV

最近在项目中使用到了redis来存储数据,本文总结下redis的安装和python调用。

对redis的介绍详细可参考:

https://baike.baidu.com/item/Redis/6549233

https://www.cnblogs.com/powertoolsteam/p/redis.html

Redis(Remote Dictionary Server ),即远程字典服务,是一个高性能的key-value数据库。

包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value存储系统
  • 开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

下面就介绍下Redis服务的安装,以及python的api使用。

redis服务的安装和启动

我使用的是linux系统,安装比较简单

代码语言:javascript
复制
yum install redis

启动服务

代码语言:javascript
复制
systemctl start redis

然后通过 ps -ef | grep 6379 用默认端口号可以查看到redis服务

查看服务状态

代码语言:javascript
复制
systemctl status redis

停止服务

代码语言:javascript
复制
systemctl stop redis 

如果想修改文件配置可以在redis.conf里修改

python使用redis

1.安装库

使用python调用redis的API,需要安装python库

代码语言:javascript
复制
pip install redis

使用import reids查看安装是否成功

2.接口调用

redis是key-value的存储形式,使用也很方便,主要是set和get两个接口,我们使用本地默认服务测试:

代码语言:javascript
复制
  # redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。
  redis_conn = redis.Redis(host='127.0.0.1', port= 6379 , db= 0)
  redis_conn.set('key','Hello redis')
  print(redis_conn.get('key'))

可以看到返回key对应的数据。

3.使用redis存储numpy数组

如果value对应的是numpy数组,不能简单的直接使用set接口,这里我们需要进行一下转换,在set数据时,我们将numpy转位bytes,然后在get数据时,我们再将bytes数据还原为numpy即可。

主要接口代码:

代码语言:python
代码运行次数:0
复制
class RedisModel:
    def __init__(self,):
        self.conn_redis = redis.Redis(host='127.0.0.1', port=6379, db=0)
        
    def array_to_bytes(self, array):
        """ numpy数组转换为bytes,传入redis
        :return: encoded bytes
        """
        h, w = array.shape
        shape = struct.pack('>II', h, w)
        encoded = shape + array.tobytes()
        return encoded
        
    def bytes_to_array(self, bytes):
        """ redis中获取的values转换为numpy
        :return: array
        """
        h, w = struct.unpack('>II', bytes[:8])
        # 注意这里dtype和输入一致,防止数据长度对齐问题
        a = np.frombuffer(bytes[8:], dtype=np.float32).reshape(h, w)
        return a
        
    def get(self, key):
        """ 获取redis内key对应的数据包
        :param key: room_id
        :return: value(M*N矩阵),key不存在,返回None
        """
        # value = None
        # if self.conn_redis.exists(key):
        value = self.conn_redis.get(key)
        value = self.bytes_to_array(value)
        return value
        
    def set(self, key, item):
        """  新信息写入redis
        :param key:  ****
        :param item:*****
        """
        b_value = self.array_to_bytes(item)
        self.conn_redis.set(key, b_value)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • redis服务的安装和启动
  • python使用redis
    • 1.安装库
      • 2.接口调用
        • 3.使用redis存储numpy数组
        相关产品与服务
        云数据库 Redis®
        腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档