Redis基本操作及应用实例

Redis

五大类型

  • string hash list set zset

  • 判断类型 type key

  • hash的存储(类似字典)
    • hset key field value 添加元素
      • field 相当于字典中的键
    • hgetall key 获取key的内容
    • hkeys key 获取里面的field
    • hvals key 获取对应的值
    • hdel key field 删除对应的field
  • string:
    • set get del
    • incr dect
    • incrby decrby
    • incrbyfloat 后面可以加小数
    • append 追加
    • getrange key start end 截取
  • list:双向链表
    • lpush key value .. 左边插入
    • rpush key value .. 右边插入
    • lrange key 0 -1 读取列表
    • lpop/rpop key 从左边/右边删除一个元素
    • llen key 计算列表长度
  • set:集合
    • sadd key values 添加
    • scard key 计算集合的长度
    • smembers key 查看集合的内容
    • spop key 删除一个值 随机删除一个
  • zset:有序集合
    • zadd key score members 添加 score 是排序的标准 members 元素
    • zscore key members 取到对应的score
    • zrange key 0 -1 从小到大取 按score
    • zrevrange key 0 -1 从大到小取 按score
    • zrem key members 删除
  • 设置存活时间
  • expire mykey 时间 对一个键设置过期时间
  • ttl mykey 查看存活时间还有多久

登录系统应用

  1. pip install redis
  2. 连接mysql
  3. 连接redis
    • import redis
    • redis.Redis()
  4. 获取姓名密码参数
    • python xxx.py argv1 argv2
    • import sys
    • sys.argv[1]
  5. 访问redis, 判断输入的姓名和密码和redis中保存的用户名和密码是否匹配

  6. 和redis不匹配,则查询mysql,select操作

  7. mysql有查询结果的话,则更新到redis, 反之则没有该用户


# -*- coding:utf-8 -*-

import sys

import pymysql
import redis

#连接mysql并返回查询结果
def con_mysql(sql):
    db = pymysql.connect(
        host='ip',
        user='root',
        password='密码',
        port=3306,
        db='login',
        charset='utf8')
    cursor = db.cursor()
    cursor.execute(sql)
    data = cursor.fetchall()
    db.close()
    return data

#连接redis
def con_redis():
    r = redis.Redis(
        host='ip',
        password='密码',
        port=6379)
    return r

#对比用户名和密码是否和数据库内容匹配
def test_user(name, password):
    r = con_redis()
    r_name = r.hget('infor', 'uname').decode('utf8')
    r_password = r.hget('infor', 'upassword').decode('utf8')
    if r_name == name and r_password == password:
        return '登录成功'
    else:
        sql = '''select * from tb_infor where uname="%s" 
        and upassword="%s";''' %(name, password)
        if con_mysql(sql):
            r.hset('infor', 'uname', name)
            r.hset('infor', 'upassword', password)
            return '登录成功,redis已修改'
        else:
            return '登录失败'


if __name__ == '__main__':
    if len(sys.argv) == 3:
        uname = sys.argv[1]
        upassword = sys.argv[2]
        print(test_user(uname, upassword))
    else:
        print('请输入用户名和密码')

订阅,消费者,发布者

  • new
  • del

# -*- coding:utf-8 -*-

import redis

class RedisBase(object):

    def __init__(self):

        self.__conn = redis.Redis(host='ip', 
                                  password='密码', 
                                  port=6379)
        self.pub = 'test'
        self.sub = 'test'

    #发布
    def publish_msg(self, msg):
        #publish发布消息的方法

        self.__conn.publish(self.pub, msg)

        #订阅
    def subscribe_msg(self):
        #创建一个订阅对象
        pub = self.__conn.pubsub()
        #找到通道,并建立连接
        pub.subscribe(self.sub)
        #返回通道内的内容
        pub.parse_response()
        return pub
接收者

# -*- coding:utf-8 -*-

from subs import RedisBase

obj = RedisBase()
redis_sub = obj.subscribe_msg()

while True:
    #等待连接,并返回通道内消息
    msg = redis_sub.parse_response()
    print('msg: %s' % msg)
发布者

# -*- coding:utf-8 -*-

from subs import RedisBase

obj = RedisBase()
msg = 'hello world'
obj.publish_msg(msg)

扩展

  • 获取网页源代码
  • requests
  • beautifulsoup(bs4)
  • scrapy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值