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
- hset key field value 添加元素
- 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 查看存活时间还有多久
登录系统应用
- pip install redis
- 连接mysql
- 连接redis
- import redis
- redis.Redis()
- 获取姓名密码参数
- python xxx.py argv1 argv2
- import sys
- sys.argv[1]
访问redis, 判断输入的姓名和密码和redis中保存的用户名和密码是否匹配
和redis不匹配,则查询mysql,select操作
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