redis简介及应用

redis简介

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

一. mysql事务

  1. 原子性: 一个事务是不可分割的整体,执行操作时就是一起做,或者一起都不做
  2. 一致性:意思是张三给李四转了100元,李四就必须加100元
  3. 隔离性 意思是写数据是隔离开
  4. 持久性 意思是数据库的改变不能返回,改了就改了

Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

二. 安装redis数据库

yum install redis

三 redis相关的命令

redis-server  #启动redis数据库服务器
redis-server & #启动redis数据库服务器并且让它在后台运行
redis-cli   #进入redis客户端
redis-cli -h 127.18.40.58 -p 6379 -a "123456" 连接到其他redis服务器

四. redis五大数据类型

  • 字符串(string)
set key value   #设置key的值
get key         #获取key的值
mset key1 value1 key2 value2 ... #设置多个key的值
mget key1 key2...                #获取多个key的值
getrange key start end           #返回key中字符串值的子串(切片)
incr key       #将key中的数值加一
decr key       #将key中的数值减一
append key value  #将指定的值追加到key的字符值的后面
  • hash
hset key field value  #将哈希表 key 中的字段 field 的值设为 value 
hget key field        #获取哈希表key中的字段field的值
hgetall key           #获取哈希表key的所有字段和值
hkeys  key            #获取哈希表中所有的key
hvals  key            # 获取哈希表中所有的filed
hdel key field     #删除哈希表key中的field的值
  • list(列表)
lpush   key  value1 value2...         #在列表key头部插入数据 
rpush   key value1 value2...         #在列表key末尾插入数据        
lrange  key start  end            #获取列表key指定范围的元素
rpop key                    #删除列表key最后一个元素
llen  key                       #获取列表key的长度
  • set(集合)

sadd  key member1  member2 member3....   #向集合key添加一个或多个成员
scart  key                           #获取集合key的成员数
spop  key                #移除并返回集合key中的一个随机数
smembers key             #获取列表key的所有的成员
  • sorted set(有序集合)
zadd  key score1 value1 score2 value2 ...  #向有序集合添加一个或多个成员
zadd myzset 1 "one"  2  "two"  3  "three"  #例子
zcard key    #获取有序集合的成员数

五.redis练习题(redis实现登录)

'''
登录redis+mysql

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.不匹配则查询mysql, select操作

7.如果mysql里面有查询结果,则更新到redis中,反之则返回没该用户
'''
import sys
import pymysql   # 导入mysql接口模块
import redis     # 导入redis接口模块

def con_mysql(sql):  # 连接mysql数据函数
    db = pymysql.Connect(host='localhost',
           user='root',
           passwd='123456',
           db='company',
           port=3306,
           charset='utf8'
) 
    cursor = db.cursor()
    cursor.execute(sql)
    data = cursor.fetchall()
    db.close()
    return data
def con_redis(name,passwd): #连接redis数据库函数
    r = redis.Redis(host='39.108.188.19',port=6379)
    r_name = r.hget('user','name') #获取redis数据库中用户名
    r_passwd = r.hget('user','passwd') # 获取redis数据库中的密码
    r_name = r_name.decode('utf8')  # 转换字符
    r_passwd = r_passwd。decode('utf8') # 转换字符
    # 判断用户输入的用户名和密码是不是和redis数据库的相等
    if name == r_name and passwd == r_passwd:   
        return Ture,'登陆成功'
    else:
        return False,'登录失败'


if __name__ = '__main__':
    name = sys.argv[1]  #拿到用户输入的用户名
    passwd = sys.argv[2] # 拿到用户输入的密码
    resoult = con_redis(name,passwd) 
    if not result[0]:
        sql = ''' select * from tb_user where user="%s" and passwd="%s" ''' %(name,passwd)
        data = con_mysql(sql)
        if data:
            r = redis.Redis(host='39.108.188.19',port=6379)
            r.hset = ('user','name',name) # 更新redis数据库
            r.hset = ('user','passwd',passwd)#更新redis数据库
            print('刷新redis.登录成功')
         else:
             print('用户名或者密码错误')
     else:
         print('redis中的数据正确',登录成功)

你可能感兴趣的:(python,redis)