Windows下Redis的基本操作 + Python操作Redis

神奇: 客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库。首先Redis不支持自定义数据库的名字,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。

1 启动/停止

(1)打开cmd,如果配置系统的环境变量,直接输入 redis-server.exe redis.windows.conf 便可启动redis服务器。 (后面的redis.windows.conf是端口等配置信息,可以省略。)

(2)停止 redis-server --service-stop

(3)另起一个cmd,执行redis-cli.exe -h 127.0.0.1 -p 6379便可启动redis客户端,在这里就可以进行实际的用户操作了。(后面的-h 127.0.0.1 -p 6379:-h 是主机ip,-p 是端口号,也可以省略。)

2 操作

设置键值对:set myKey myValue

获得键的值:get myKey

查看所有的键: keys *

删除所有的键:flushall

删除键值对:del myKey 删除成功返回1

判断是否存在:exists myKey 存在返回1,不存在返回0

3 列表

插入列表:

lpush myKey redis
lpush myKey mongodb
lpush myKey mysql

查看列表:

lrange myKey 0 10 
起始index为0,终止index为10

移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止:

blpop key1 [key2] timeout
timeout设置为时间,单位为s,如果列表没有元素,就会等待timeout的时间

4 python 操作 redis

(1)通过redis client写入数据:
在这里插入图片描述
(2)代码片段

import redis
class Task(object):
    def __init__(self):
        self.redis_conn = redis.StrictRedis(host='localhost')
        self.queue = 'myKey'

    def listen_queue(self):
        while True:
            cell = self.redis_conn.blpop(self.queue, 0)[1]
            print("The output of myKey queue :", cell)

if __name__ == '__main__':
    print('listen queue: %s' % Task().listen_queue())

(3)代码执行结果
在这里插入图片描述

5 Redis发布订阅

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。
(1)起一个redis客户端作为订阅者,订阅频道“redischat”
subscribe redischat
在这里插入图片描述
(2)另起一个redis客户端作为发布者,发布频道也为“redischat”,发布内容为 “redis is a great caching technique”
publish redischat "redis is a great caching technique"
在这里插入图片描述
(3)结果:作为订阅者的redis客户端,收到以下消息:
在这里插入图片描述
(4)Python操作 redis 消息订阅

import redis
class Task(object):
    def __init__(self):
        self.rcon = redis.StrictRedis(host='localhost')
        self.ps = self.rcon.pubsub()
        self.ps.subscribe('channel')
    def listen_task(self):
        for i in self.ps.listen():
            if i['type'] == 'message':
                print("Task get", i['data'])
if __name__ == '__main__':
    print('listen task channel')
    Task().listen_task()

通过redis client 的channel频道发布消息:
在这里插入图片描述
可以看到python中接受到相应的消息:
在这里插入图片描述

6 通过flask集成 python+redis代码

import redis
import random
import logging
from flask import Flask, redirect

app = Flask(__name__)

redis_test = redis.StrictRedis(host='localhost')
prodcons_queue = 'myQueue'
pubsub_channel = 'myChannel'

@app.route('/')
def index():

    html = """
<br>
<center><h3>Redis Message Queue</h3>
<br>
<a href="/prodcons">生产消费者模式</a>
<br>
<br>
<a href="/pubsub">发布订阅者模式</a>
</center>
"""
    return html


@app.route('/prodcons')
def prodcons():
    elem = random.randrange(10)
    redis_test.lpush(prodcons_queue, elem)  # 生产者
    logging.info("lpush {} -- {}".format(prodcons_queue, elem))
    output = redis_test.blpop(prodcons_queue, 1)[1] # 消费者
    print(output)
    return redirect('/')

@app.route('/pubsub')
def pubsub():
    ps = redis_test.pubsub()
    ps.subscribe(pubsub_channel)  # 订阅者
    elem = random.randrange(5)
    redis_test.publish(pubsub_channel, elem)  # 发布者
    for i in ps.listen():
        if i['type'] == 'message':
            print("Task get", i['data'])
    return redirect('/')

if __name__ == '__main__':
    app.run(debug=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值