Redis非关系型数据库:
启动
- 安装redis:
– linux系统安装redisapt install redis-server
apt install redis-tools
– 在云服务器里面开启安全组,注释掉绑定地址即可以全网访问 - redis-server & / systemctl start redis
- 安装redis:
配置认证密码
- vim /etc/redis/redis.conf
- vim /etc/redis/redis.conf
连接redis服务器
- redis-cli -h 172.16.252.141 -p 端口号 :远程连接
- redis-cli : 本地连接
查看帮助
- redis-server –help
- redis-server myredis.conf :以此执行文件运行redis
redis使用:
hash: –>相当于字典
– hset, hget
– hkeys
– hvals
– hgetall
– hdel
– hmset user name age 18 addr chengdu : 批量插入string:
– set, get, del
– incr, decr
– incrby, decrby
– incrbyfloat
– getrange
– appendlist:双向链表
– lpush, rpush
– lrange
– lpop, rpop
– llenset: 集合
– sadd
– spop
– 以上方法是随机弹出zset: 有序集合
– zadd
– zscore, key, member
– zrange
– zrevrange
- 登录redis + mysql
- pip install redis
- 连接mysql
- 连接redis
– import redis
– redis.Redis() - 获取姓名和密码参数
– python xxx.py argv1 argv2
– import sys
– sys.argv[1] - 访问redis, 判断输入的姓名和密码和redis中保存的用户名和密码是否匹配
- 和redis不匹配, 则查询mysql中数据
- mysql查询结果存在的话, 则更新到redis中, 反之没有该用户
代码如下:
-- coding:utf-8 --
”’python
“`python
import sys
import pymysql, redis
def main1(sql):
db = pymysql.connect(
host=’47.95.231.161’,
user=’root’,
passwd=’nj2905058’,
port=3306,
db=’srs’,
charset=’utf8’
)
cursor = db.cursor()
cursor.execute(sql)
db.commit()
data = cursor.fetchall()
db.close()
return data
def main2(name, passwd):
r = redis.Redis(
‘47.95.231.161’,
6379,
0,
‘nj2905058’
)
r_name = r.hget(‘user’, ‘name’)
r_passwd = r.hget(‘user’, ‘passwd’)
r_addr = r.hget(‘user’, ‘addr’)
得到的数据都是以二进制方式存的,必须进行解码
以后熟练以后可以 r_addr = r.hget(‘user’, ‘addr’).decode(‘utf8’)
if r_name:
r_name = r_name.decode(‘utf8’)
r_passwd = r_passwd.decode(‘utf8’)
r_addr = r_addr.decode(‘utf8’)
if name == r_name and passwd == r_passwd:
return True, ‘登录成功’
else:
return False, ‘登录失败’
if name == ‘main‘:
获取传入的姓名和密码参数
name = sys.argv[1]
passwd = sys.argv[2]
传入redis中,进行校验
result = main2(name, passwd)
print(result[0])
如果结果为真,则在redis里面匹配成功,不进入mysql进行验证
如果为假, 则进入mysql数据库进行验证
if not result[0]:
# 查询mysql数据库
sql = ”’select * from stu where name=”%s”
and passwd=”%s””’ % (name, passwd)
data = main1(sql)
# 如果data为空,则在mysql里面没有匹配到账号密码
# 直接进入else,返回错误.
# 如果data不为空则刷新redis里面的数据
if data:
r = redis.Redis(‘47.95.231.161’, 6379, 0,
‘nj2905058’)
r.hset(‘user’, ‘name’, name)
r.hset(‘user’, ‘passwd’, passwd)
print(‘刷新redis, 登录成功’)
else:
print(‘用户名和密码错误’)
else:
print(‘redis中数据正确,登录成功’)
”’