zoukankan      html  css  js  c++  java
  • 数据库之redis

    启动redis服务器:sudo redis-server /etc/redis/redis.conf

    通过客户端进入,执行命令:redis-cli

    测试服务是否可用:ping

    查看redis当前状态:ps -ajx|grep redis

    停止redis服务:sudo service redis stop或者:redis-cli shutdown

    启动redis服务:sudo service redis start

    如果修改配置文件后启动服务器:sudo redis-server /etc/redis/redis.conf

    重启redis服务:sudo service redis restart

    设置键值name,内容是hello world:

       set name "hello world"

    设置键值及过期时间,以秒为单位:

      setex name 5 "hello world"

    设置多个键值-mset:

      mset key1 "abc" key2 "edf"

    根据多个键获取多个值

      mget key1 key2

    设置数字类型的key: set "num" 10

      将key对应的value加1:incr num

      将key对应的value加整数:incrby num 10

      将key对应的value减1:decr num

      将key对应的value减整数:decrby num 10

    追加值(append):append num 00,在后面拼接字符串

    得到string类型的长度:strlen num

    查看所有的键:keys *

    判断键是否存在,如果存在返回1,不存在返回0:EXISTS num

    查看键对应的value的类型:type num

    删除键及对应的值,删除成功返回1,失败返回0: del num

    设置和查看过期时间,以秒为单位: EXPIRE num 5  #修改为5秒过期

    查看有效时间,以秒为单位:ttl num

    hash

    设置单个属性HSET:hset py3 "name" "gj"

    设置多个属性HMSET: hmset py3 "name" "hr" "gender" 0

    获取一个属性的值 HGET: hget py3 name

    获取多个属性的值HMGET: hmget py3 "name" "gender"

    获取所有属性和值HGETALL:hgetall py3

    获取所有的属性HKEYS:hkeys py3

    获取所有值HVALS: hvals py3

    返回包含属性的个数HLEN: hlen py3

    判断属性是否存在HEXISTS,存在返回1,不存在返回0: HEXISTS py3 name

    删除属性及值,不会删除py3下的其他属性: hdel py3 name

                        del py3 所有的都删除

    list

    在头部插入数据LPUSH(爬虫用到这个语句)lpush py5 "abc" "efg"

    查看数据  lrange py5 0 -1   ps:py5表示集合,0表示集合开始,-1表示集合结尾

    查看类型  type py5

    在尾部插入数据RPUSH :rpush py5 "haha" "xixi"

    在一个元素的前|后插入新元素linsert :

     元素的前插入新元素 linsert py5 after "haha" "hehe"

     元素的后插入新元素 linsert py5 before "haha" "123"

    根据下标设置值LSET :lset py5 0  "hello"

              lset py5 -1  "xixihaha"

    返回存储在 key 的列表里指定范围内的元素: lrange py5 0 -1

                        lrange py5 2 -1

    移除并且返回 key 对应的 list 的第一个元素: lpop py5

    移除并返回存于 key 的 list 的最后一个元素: rpop py5

    裁剪列表,改为原集合的一个子集 :ltrim py5 2 3

    返回存储在 key 里的list的长度: llen py5

    返回列表里索引对应的元素:lindex py5 0

                 lindex py5 3

    set 

    添加元素--SADD: SADD key member [member ...]

           ps:sadd py6 "abc" "def" "123"

    返回key集合所有的元素--SMEMBERS:smembers py6

    准备数据:

      sadd py6 defg 123 abc 456

      sadd py7 abc 123 world 456

    求多个集合的交集:sinter py6 py7

    求某集合与其它集合的差集:sdiff py6 py7

    zset

    添加--ZADD:ZADD key score member [score member ...]

      ps: zadd py8 3 "you!" 1 "I" 2 "love"

    返回指定范围内的元素--ZRANGE : zrange py8 0 -1

    返回元素个数--ZCARD:zcard py8

    返回有序集key中,score(权重)值在min和max之间的成员--ZCOUNT :ZCOUNT key min max

      ps:zcount py8 0 1

    返回有序集key中,成员member的score值--ZSCORE :ZSCORE key member

      ps:zscore py8 "I"

    Redis与Python交互

    综合案例:用户登录:

    需求说明

    业务过程如下:

      输入用户名、密码

      密码加密

      判断redis中是否记录了用户名,如果有则成功

      如果redis中没有用户名,则到mysql中查询

      从mysql中查询成功后,将用户名记录到redis

    1、先完成python与redis的交互并且封装在模块myredis.py中:

    import redis
    
    class RedisHelper():
        def __init__(self,host='192.168.31.21',port=6379):
            self.__redis = redis.StrictRedis(host, port)
        def get(self,key):
            if self.__redis.exists(key):
                return self.__redis.get(key)
            else:
                return ""
        def set(self,key,value):
            self.__redis.set(key,value)
    
    if __name__ == "__main__":
    
       red = RedisHelper()
       #name是key,hello world是值
       red.set("name","hello world")
       #根据key得到值
       print(red.get("name"))#b'hello world'

    2、再完成python与mysql交互并且封装成模块mysql.py:

    import pymysql
    class MysqlHelper(object):
       def __init__(self,host):
          self.host = host
          self.port = 3306
          self.db = "mysql"
          self.user = "xxx" #mysql用户名
          self.password = "123456" #mysql密码
          self.charset = "utf8"
    
       #打开链接,返回的对象用conn属性接收
       def open(self):
          self.conn = pymysql.connect(
             host=self.host,
             port=self.port,
             db=self.db,
             user=self.user,
             password=self.password,
             charset=self.charset
          )
          #得到cursor
          self.cursor = self.conn.cursor()
       #关闭链接
       def close(self):
          self.cursor.close()
          self.conn.close()
       #曾删改
       def cur(self,sql,parms=[]):
          try:
             self.open()
             self.cursor.execute(sql,parms)
             #提交事务
             self.conn.commit()
             self.close()
             print("执行完毕!")
          except Exception as result:
             print(result)
    
       #得到所以数据
       def get_all(self,sql,parms=[]):
          try:
             self.open()
             self.cursor.execute(sql,parms)
             #返回所以的结果集
             result = self.cursor.fetchall()
             self.close()
             return result
          except Exception as result:
             print(result)
    
       # 得到一条数据
       def get_one(self, sql, parms=[]):
          try:
             self.open()
             self.cursor.execute(sql, parms)
             result = self.cursor.fetchone()
             self.close()
             return result
          except Exception as result:
             print(result)
    
       #插入数据
       def insert(self,sql,parms=[]):
          self.__edit(sql,parms)
       #删除数据
       def delete(self,sql,parms=[]):
          self.__edit(sql,parms)
    
       #修改数据
       def update(self,sql,parms=[]):
          self.__edit(sql, parms)
    
       #修改数据
       def __edit(self,sql,parms=[]):
          try:
             self.open()
             count = self.cursor.execute(sql,parms)
             #提交事务
             self.conn.commit()
             self.close()
             print("执行完毕!")
             return count
          except Exception as result:
             print(result)

    3、最后实现用户登录:

    from myredis import RedisHelper
    from mysql import MysqlHelper
    import hashlib
    
    name = input("请输入用户名:")
    pwd = input("请输入密码:")
    
    sha1=hashlib.sha1()
    sha1.update(pwd.encode("utf-8"))
    pwd1=sha1.hexdigest()
    
    try:
        redis=RedisHelper()
        if redis.get('uname')==name:
            print('ok')
        else:
            mysql = MysqlHelper('localhost')
            upwd = mysql.get_one('select upwd from userinfos where uname=%s',[name])
            if upwd==None:
                print('用户名错误')
            elif upwd[0]==pwd1:
                redis.set('uname', name)
                print('登录成功')
            else:
                print("密码错误")
    except Exception as e:
        print(e.message)
  • 相关阅读:
    ORM
    数据库事务课上代码
    数据存储——SQLite数据库存储——API
    事务的ACID特性
    数据库练习3
    数据存储——SQLite数据库存储——SQL语句——DML数据操作语言、内置函数聚合函数
    数据库练习2
    数据存储——SQLite数据库存储——SQL语句——DQL数据查询语言
    数据库练习
    《那些事之Log4j》什么是log4j?【专题一】
  • 原文地址:https://www.cnblogs.com/cz-basic/p/9079497.html
Copyright © 2011-2022 走看看