redis非关系型数据库的基本类型以及简单操作

本文介绍了Redis数据库的五种基本数据类型:string、hash、list、set和zset,并提供了相关操作示例,如设置、获取、删除、修改和检查键值。此外,还展示了如何使用Python实现账号登录功能,通过先比较Redis中的数据,如果匹配则直接登录成功,否则再查询MySQL数据库的login表来验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2018.01.19**************************************************************
author: wills
redis有五大类型 sting hash list set zset
set p 1 设置p的值为1
get p 获取p的值
incr p 整数p的值增加1
decr p 整数p的值减少1
redis相关 REmote Dictionary Server

1. set mykey “test” 为键mykey设置新值,并覆盖原有值
2. getset mcounter 0 先取值mcounter的值,再给mcounter赋值,取得值是mcounter之前的值
3. setex mykey 10 “hello” 设置mykey的过期时间为10s,在存活时间内可以取mykey的值,过期后mykey不在存在
4. setnx mykey “hello” 若该键不存在,则为该键设置新值


1. del mykey 删除已有键


1.append mykey “hello” 若该键不存在,返回当前value的长度,若存在则返回追加后的长度
2. incr mykey 如果mykey的值是整数则其值增加1,否则出错
3. decr mykey 如果mykey的值是整数其值减一,否则报错
4. decrby mykey 3 如果mykey的值为整数则其值 - 3
5. setrange mykey 20 dd 把mykey中第21和22


1. exists mykey 判断mykey这个键是否存在,存在返回1,不存在返回0
2. get mykey 获取mykey对应的值
3. strlen mykey 查看mykey的长度
4. ttl mykey 查看mykey的存活时间,一直存在则为-1,不存在-2 ,有存在时间则返回剩余存在时间
5. mget key1 key2 key3 批量的获取键
6. 查看数据类型 type p

下面是一个我用python模拟账号登录的操作,输入的账号和密码先和非关系型数据库redis里面的数据进行,当比较结果匹配时直接显示登录成功,如果不匹配,那么再去关系型数据集mysql里面login这个存储用户名和密码的表里查找,看有没有匹配,如果匹配成功则返回登录成功,并且修改redis对应的值,如果还是没有匹配那么返回错误,代码如下。

# 导入sys模块,用于接收命令行传入的参数,模拟用户在网页或者app上输入的账号密码
import sys
# 导入pymysql,redis模块用于连接相关数据库
import pymysql
import redis

# 定义连接mysql的函数
def con_mysql(sql):
# 连接的数据库是我自己放在阿里云服务器上的,端口是默认的3306
# db表示我的数据放在test1数据库里面
    db = pymysql.connect(
        host='120.79.131.105',
        user='root',
        passwd='13579',
        db='test1',
        port=3306,
        charset='utf8')
    # 创建一块缓存区,保存sql语句执行后获得的结果
    cursor = db.cursor()
    # 执行sql语句,sql语句通过参数传入
    cursor.execute(sql)
    data = cursor.fetchall()
    db.close()
    # 返回值会执行sql语句返回的结果
    return data

# 定义连接redis函数
def con_redis():
    return redis.Redis(host='120.79.131.105', password='123456', port=6379)

def main():
    # 首先获取传入的参数用户名和密码
    username = sys.argv[1]
    passwd = sys.argv[2]
    # 连接redis,获得一个对象r,用r对redis里面的数据进行相应的操作
    r = con_redis()
    # 查找redis中名为user的哈希表,里面存放着所有的用户名和密码
    r_names = r.hkeys('user')
    flag = False
    # user表的键表示用户名,对其进行遍历,看看有没有和输入用户名相同的,如果有继续比较相应的密码,如果没有则进入下一步,flag标签在这里用来进行特殊条件判断
    # flag初始值=2,一旦进入循环,其值变为false,
    for name in r_names:
        name = name.decode('utf8')
        # 如果用户名存在,再查找相应的密码
        if username == name:
            r_passwd = r.hget('user', username).decode('utf8')
            if r_passwd == passwd:
                flag = True
                print('登录成功')
                # 如果找到对应的账号密码输出登录成功,并且跳出循环,并且将flag的值置为True
                break
    # 如果在redis没有找到对应账号密码,再去mysql里面寻找
    if not flag:
        # sql表示数据库查询语句
        sql = 'select * from login;'
        mysql = con_mysql(sql)  
        f = True
        for user in mysql:
            if user[0] == username and user[1] == int(passwd):
                r.hset('user', username, passwd)
                print('登录成功,刷新redis')   
                f = False
                break
        if f:
            print('用户名或密码错误')
    # 这里表示在数据库也没有找到对应的账号与密码
    else:
        print('用户名或密码错误')           


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

披星の月

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值