• Python 9 Redis


    Redis介绍

    redis是key-value型的存储系统,他本身就是一个大字典,支持多种数据结构,包括String、List、Set、Zset和Hash。其数据都缓存在内存中,但是会定时将数据写入磁盘,可以做持久化。

    一、redis的特点

    1、数据存储在内存中,读取写入速度快

    2、支持持久化,定时将数据写入磁盘。

    3、支持五种数据类型,但是不支持嵌套。

    4、支持事务,要么都执行要么都不执行。

    二、redis操作和全局操作

    连接redis:

    1 #方式一:直接连接
    2 import redis
    3 conn = redis.Redis(host="127.0.0.1", port=6379, password=xxxx)  # 默认是存储字节类型,可以通过decode_response=True把值自动转换成字符
    4 
    5 
    6 #方式二:创建连接池
    7 pool = redis.ConnectionPool(host="127.0.0.1", port=6379, password=xxxx, max_connections=100)
    8 conn = redis.Redis(connection_pool=pool)

    全局操作:

    conn.keys()   #取到所有的键
    #redis可以使用模糊匹配,*代表任意多个字符, ?代表一个字符, [k,m]代表匹配中括号内的字符
    
    conn.delete("name")   #删除一个键值
    conn.flushall()    #删除所有键值
    conn.exists("name")    #查看这个键是否存在
    conn.rename(old, new)    #重命名一个键
    conn.randomkey()    #随机获取一个键
    
    scan_iter(name)    #返回一个迭代器,防止值太多导致系统崩溃

    事务:

    1 pipe = conn.pipeline(transation=True)
    2 pipe.multi()
    3 xxxx
    4 pipe.execute()

    1、String操作

    1 conn.set(k, v)    #设置单个值
    2 conn.get(k)    #获取单个值
    3 conn.mset({k1:v1, k2:v2})    #批量设置值
    4 conn.mget(k1, k2)    #批量获取值

    2、List操作

     1 conn.lpush(name, val)    #向列表最左边存放数据
     2 conn.rpush(name,val)     # 向列表最右边存放数据
     3 conn.lpop(name)    #取出最左边的值
     4 conn.rpop(name)    #取出最右边的值
     5 
     6 conn.lrange(name, start, end)    #取出列表一定范围内的值
     7 conn.lindex(name, index)    #取出该索引位置的值
     8 conn.llen(name)     #查看列表长度
     9 
    10 #自定义增量迭代
    11 #如果想取出列表中的所有值,需要自定义一个函数,一个值一个值取,防止程序崩溃。
    12 def  get_list(name)
    13     length = conn.llen(name)
    14     for index in range(length):
    15         yield conn.lindex(name, index)
    16 
    17 for i in get_list("xxx"):
    18     print(i)

    3、Hash操作

     1 conn.hset(name, key, val)    #设置值
     2 conn.hget(name, key)    #取值
     3 conn.hmset(name, {k1:v1, k2:v2})   #批量设置值
     4 #conn.hmget(name, k1, k2)
     5 conn.hmget(name, [k1, k2])    #批量获取值
     6 conn.hgetall(name)    #获取所有键值
     7 
     8 conn.hlen(name)    #获取键值对个数
     9 conn.hkeys(name)    #获取所有的键
    10 conn.hvals(name)    #获取所有的值
    11 conn.hexists(name, key)    #检查是否存在对应的键
    12 conn.hdel(name, key)     #删除
    13 
    14 conn.hscan_iter(name)    #批量获取键值
    15 #for k,v in conn.hscan_iter(name):
    16 #    print(k, v)

    4、Set操作(集合可以用来去重)

    1 conn.sadd(name, val)    #给集合添加元素
    2 conn.spop(name)    #从集合右侧取出并删除一个值
    3 conn.smembers(name)    #获取name对应集合的所有元素
    4 conn.sismember(name, val)    #检验是否是该集合的值
    5 
    6 conn.sscan_iter()

    5、Sorted Set(有序集合)

    1 conn.zadd(name,k1=1,k2=2)   #添加值和优先级
  • 相关阅读:
    python练习六十二:文件处理,往文件中所有添加指定的前缀
    python练习六十一:文件处理,读取文件内容
    使用广度优先搜素查找路径
    不同路径 II
    使用深度优先搜索查找路径
    不同路径
    深度优先搜索
    旋转链表
    java 迭代
    表示图的数据类型
  • 原文地址:https://www.cnblogs.com/yinwenjie/p/10847515.html
Copyright © 2020-2023  润新知