美文网首页程序员python小课——零基础入门——学习笔记2023学python
跟我一起从零开始学python(五)数据库编程:Redis数据库

跟我一起从零开始学python(五)数据库编程:Redis数据库

作者: 天天玩python | 来源:发表于2023-07-09 16:50 被阅读0次

    前言

    回顾之前讲了python语法编程 ,必修入门基础和网络编程,多线程/多进程/协程等方面的内容,今天到了数据库编程篇,前面MySQL已经讲完了前面没看的也不用往前翻,系列文已经整理好了:

    1.跟我一起从零开始学python(一)编程语法必修
    2.跟我一起从零开始学python(二)网络编程
    3.跟我一起从零开始学python(三)多线程/多进程/协程
    4.跟我一起从零开始学python(四)数据库编程:MySQL篇

    本篇讲:python数据库编程:Redis数据库

    本系列文根据以下学习路线展开讲述,由于内容较多,:

    从零开始学python到高级进阶路线图

    一丶服务端和客户端基本操作命令

    Redis是一种基于内存的数据结构存储系统,常用于缓存、消息队列、排行榜等场景。下面介绍一些Redis服务端和客户端的基本操作命令。

    1.服务端命令

    启动Redis服务

    redis-server
    

    关闭Redis服务

    redis-cli shutdown
    

    查看Redis服务状态

    redis-cli ping
    

    查看Redis服务版本

    redis-cli info server
    

    查看Redis服务配置

    redis-cli config get *
    

    修改Redis服务配置

    redis-cli config set <parameter> <value>
    

    2.客户端命令

    连接Redis服务

    redis-cli -h <host> -p <port> -a <password>
    

    设置键值对

    redis-cli set <key> <value>
    

    获取键值对

    redis-cli get <key>
    

    删除键值对

    redis-cli del <key>
    

    判断键是否存在

    redis-cli exists <key>
    

    设置键的过期时间

    redis-cli expire <key> <seconds>
    

    查看键的过期时间

    redis-cli ttl <key>
    

    查看所有键

    redis-cli keys *
    

    查看键的类型

    redis-cli type <key>
    

    列表操作

    redis-cli lpush <key> <value>  # 从左侧插入元素
    redis-cli rpush <key> <value>  # 从右侧插入元素
    redis-cli lrange <key> <start> <stop>  # 获取列表元素
    redis-cli lpop <key>  # 从左侧弹出元素
    redis-cli rpop <key>  # 从右侧弹出元素
    

    集合操作

    redis-cli sadd <key> <value>  # 添加元素
    redis-cli smembers <key>  # 获取所有元素
    redis-cli sismember <key> <value>  # 判断元素是否存在
    redis-cli srem <key> <value>  # 删除元素
    

    哈希表操作

    redis-cli hset <key> <field> <value>  # 设置字段值
    redis-cli hget <key> <field>  # 获取字段值
    redis-cli hgetall <key>  # 获取所有字段和值
    redis-cli hdel <key> <field>  # 删除字段
    

    有序集合操作

    redis-cli zadd <key> <score> <value>  # 添加元素
    redis-cli zrange <key> <start> <stop>  # 获取元素
    redis-cli zrem <key> <value>  # 删除元素
    

    以上是Redis服务端和客户端的基本操作命令,更多命令可以参考Redis官方文档。

    二丶数据操作

    1.string

    Redis是一种基于内存的数据存储系统,支持多种数据结构,其中之一就是string。在Python中,我们可以使用redis-py库来操作Redis数据库中的string数据类型。

    以下是一些常用的Redis string操作命令:

    ①.set(key, value):设置key对应的value值

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.set('name', 'Tom')
    

    ②.get(key):获取key对应的value值

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    name = r.get('name')
    print(name)
    

    ③.mset(mapping):批量设置多个key-value对

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.mset({'name': 'Tom', 'age': 18})
    

    ④.mget(keys):批量获取多个key对应的value值

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    values = r.mget(['name', 'age'])
    print(values)
    

    ⑤.incr(key, amount=1):将key对应的value值增加amount

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.set('count', 1)
    r.incr('count')
    

    ⑥.decr(key, amount=1):将key对应的value值减少amount

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.set('count', 10)
    r.decr('count', 5)
    

    ⑦.append(key, value):将value追加到key对应的value值的末尾

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.set('name', 'Tom')
    r.append('name', ' Smith')
    

    ⑧.strlen(key):获取key对应的value值的长度

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    name_len = r.strlen('name')
    print(name_len)
    

    以上是Redis string数据类型的一些基本操作命令,可以根据实际需求进行使用。

    2.键命令

    Redis中的键命令用于管理和操作键值对。以下是一些常用的键命令

    • SET key value:设置键值对,如果键已经存在,则覆盖原有的值。
    • GET key:获取键对应的值。
    • DEL key:删除指定的键值对。
    • EXISTS key:检查指定的键是否存在。
    • KEYS pattern:查找所有符合给定模式的键。
    • TTL key:获取键的过期时间,单位为秒。
    • EXPIRE key seconds:设置键的过期时间,单位为秒。
    • PERSIST key:移除键的过期时间,使其永久有效。
    • TYPE key:获取键对应的值的数据类型。

    这些命令可以通过Python Redis模块中的对应方法来调用,例如:

    import redis
    
    # 连接Redis数据库
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 设置键值对
    r.set('name', 'Alice')
    
    # 获取键对应的值
    name = r.get('name')
    print(name)
    
    # 删除指定的键值对
    r.delete('name')
    
    # 检查指定的键是否存在
    exists = r.exists('name')
    print(exists)
    
    # 查找所有符合给定模式的键
    keys = r.keys('*')
    print(keys)
    
    # 获取键的过期时间
    ttl = r.ttl('name')
    print(ttl)
    
    # 设置键的过期时间
    r.expire('name', 60)
    
    # 移除键的过期时间
    r.persist('name')
    
    # 获取键对应的值的数据类型
    type = r.type('name')
    print(type)
    

    3.hash

    在 Redis 中,Hash 是一个键值对集合,其中键和值都是字符串类型。Hash 可以用于存储对象,例如用户信息、商品信息等。

    以下是 Python Redis 操作 Hash 的一些常用命令:

    ①.HSET(key, field, value):设置 Hash 中指定字段的值

    redis_conn.hset('user:1', 'name', 'Alice')
    

    ②.HGET(key, field):获取 Hash 中指定字段的值

    redis_conn.hget('user:1', 'name')
    

    ③.HMSET(key, mapping):设置 Hash 中多个字段的值

    redis_conn.hmset('user:1', {'age': 20, 'gender': 'female'})
    

    ④.HMGET(key, fields):获取 Hash 中多个字段的值

    redis_conn.hmget('user:1', 'name', 'age', 'gender')
    

    ⑤.HGETALL(key):获取 Hash 中所有字段和值

    redis_conn.hgetall('user:1')
    

    ⑥.HDEL(key, field):删除 Hash 中指定字段

    redis_conn.hdel('user:1', 'gender')
    

    ⑦.HEXISTS(key, field):判断 Hash 中是否存在指定字段

    redis_conn.hexists('user:1', 'gender')
    

    ⑧.HKEYS(key):获取 Hash 中所有字段

    redis_conn.hkeys('user:1')
    

    ⑨.HVALS(key):获取 Hash 中所有值

    redis_conn.hvals('user:1')
    

    ⑩.HLEN(key):获取 Hash 中字段的数量

    redis_conn.hlen('user:1')
    

    以上是 Python Redis 操作 Hash 的一些常用命令,可以根据实际需求选择使用。

    4.list

    Redis中的List是一个双向链表,支持在头部和尾部进行插入和删除操作。List中的每个元素都是一个字符串。

    Python中可以使用redis-py库来操作Redis数据库中的List数据类型。

    首先需要导入redis库:

    import redis
    

    连接Redis数据库:

    r = redis.Redis(host='localhost', port=6379, db=0)
    

    List操作

    ①. 插入元素

    在List的头部插入一个或多个元素:

    r.lpush('list_key', 'value1', 'value2', 'value3')
    

    在List的尾部插入一个或多个元素:

    r.rpush('list_key', 'value4', 'value5', 'value6')
    

    在指定元素前或后插入一个元素:

    r.linsert('list_key', 'BEFORE', 'value2', 'new_value')
    r.linsert('list_key', 'AFTER', 'value2', 'new_value')
    

    ②. 获取元素

    获取List中指定范围内的元素:

    r.lrange('list_key', 0, -1)  # 获取所有元素
    r.lrange('list_key', 0, 2)  # 获取前三个元素
    r.lrange('list_key', -3, -1)  # 获取后三个元素
    

    获取List中指定索引的元素:

    r.lindex('list_key', 0)  # 获取第一个元素
    r.lindex('list_key', -1)  # 获取最后一个元素
    

    ③. 删除元素

    从List的头部删除一个元素:

    r.lpop('list_key')
    

    从List的尾部删除一个元素:

    r.rpop('list_key')
    

    删除List中指定的元素:

    r.lrem('list_key', 0, 'value2')  # 删除所有值为value2的元素
    r.lrem('list_key', 1, 'value2')  # 删除第一个值为value2的元素
    r.lrem('list_key', -1, 'value2')  # 删除最后一个值为value2的元素
    

    ④. 其他操作

    获取List的长度:

    r.llen('list_key')
    

    将List中的最后一个元素移动到另一个List的头部:

    r.rpoplpush('list_key', 'new_list_key')
    

    阻塞式地从一个List的尾部弹出一个元素,并将其插入到另一个List的头部:

    r.brpoplpush('list_key', 'new_list_key', timeout=0)
    

    以上就是Python中操作Redis数据库中List数据类型的常用方法。

    5.set

    Redis中的Set是一个无序的集合,它的作用和List类似,都是用来存储多个字符串元素的集合。但是Set不同于List的是,Set中不允许出现重复的元素,而且Set中的元素是无序的。

    Python中操作Redis的Set可以使用redis模块中的set方法。下面是一些常用的Set操作:

    ①.添加元素

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 添加单个元素
    r.sadd('set_key', 'value1')
    
    # 添加多个元素
    r.sadd('set_key', 'value2', 'value3', 'value4')
    

    ②.获取元素

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 获取所有元素
    members = r.smembers('set_key')
    print(members)
    
    # 判断元素是否存在
    is_member = r.sismember('set_key', 'value1')
    print(is_member)
    

    ③.删除元素

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 删除单个元素
    r.srem('set_key', 'value1')
    
    # 删除多个元素
    r.srem('set_key', 'value2', 'value3', 'value4')
    
    # 删除集合
    r.delete('set_key')
    

    ④.集合运算

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 求交集
    r.sadd('set_key1', 'value1', 'value2', 'value3')
    r.sadd('set_key2', 'value2', 'value3', 'value4')
    intersection = r.sinter('set_key1', 'set_key2')
    print(intersection)
    
    # 求并集
    union = r.sunion('set_key1', 'set_key2')
    print(union)
    
    # 求差集
    difference = r.sdiff('set_key1', 'set_key2')
    print(difference)
    

    6.zset

    在 Redis 中,ZSET(有序集合)是一种特殊的数据结构,它是一个键值对集合,其中每个元素都关联着一个浮点数分数。这个分数被用来按照从最小值到最大值的顺序排序元素。ZSET 的成员是唯一的,但分数(score)却可以重复。

    Python Redis 操作有序集合的方法

    ①.添加元素
    使用 zadd 命令向有序集合中添加元素,语法如下:

    zadd(name, mapping)
    

    其中,name 是有序集合的名称,mapping 是一个字典,表示要添加的元素和它们的分数。例如:

    redis.zadd('myzset', {'one': 1, 'two': 2, 'three': 3})
    

    ②.获取元素
    使用 zrange 命令获取有序集合中指定范围内的元素,语法如下:

    zrange(name, start, end, withscores=False)
    

    其中,name 是有序集合的名称,startend 分别表示要获取的元素的起始位置和结束位置(从 0 开始计数),withscores 表示是否同时返回元素的分数。例如:

    redis.zrange('myzset', 0, -1, withscores=True)
    

    ③.获取元素数量
    使用 zcard 命令获取有序集合中元素的数量,语法如下:

    zcard(name)
    

    其中,name 是有序集合的名称。例如:

    redis.zcard('myzset')
    

    ④.获取元素排名
    使用 zrank 命令获取有序集合中指定元素的排名,语法如下:

    zrank(name, value)
    

    其中,name 是有序集合的名称,value 是要获取排名的元素。例如:

    redis.zrank('myzset', 'two')
    

    ⑤.获取元素分数
    使用 zscore 命令获取有序集合中指定元素的分数,语法如下:

    zscore(name, value)
    

    其中,name 是有序集合的名称,value 是要获取分数的元素。例如:

    redis.zscore('myzset', 'two')
    

    ⑥.删除元素
    使用 zrem 命令从有序集合中删除指定的元素,语法如下:

    zrem(name, values)
    

    其中,name 是有序集合的名称,values 是要删除的元素。例如:

    redis.zrem('myzset', 'two')
    

    ⑦.获取指定分数范围内的元素
    使用 zrangebyscore 命令获取有序集合中指定分数范围内的元素,语法如下:

    zrangebyscore(name, min, max, start=None, num=None, withscores=False, score_cast_func=float)
    

    其中,name 是有序集合的名称,minmax 分别表示要获取的分数范围的最小值和最大值,startnum 分别表示要获取的元素的起始位置和数量(从 0 开始计数),withscores 表示是否同时返回元素的分数,score_cast_func 表示分数的类型转换函数。例如:

    redis.zrangebyscore('myzset', 1, 2, withscores=True)
    

    三丶python操作Redis

    1.Redis库

    Redis是一个开源的内存数据结构存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。Redis的特点是速度快、可靠性高、支持丰富的数据结构和操作,因此被广泛应用于缓存、消息队列、计数器、排行榜等场景。

    Python是一种高级编程语言,它具有简单易学、代码简洁、可读性强等特点,因此被广泛应用于Web开发、数据分析、人工智能等领域。Python提供了多种Redis客户端库,可以方便地操作Redis数据库。

    Python操作Redis需要先安装Redis客户端库,常用的有redis-pyredishiredis等。其中redis-py是Redis官方推荐的Python客户端库,支持Python 2和Python 3,提供了丰富的API,使用方便。

    安装redis-py库可以使用pip命令

    pip install redis
    

    安装完成后,就可以在Python中使用redis-py库操作Redis数据库了。下面是一个简单的示例:

    import redis
    
    # 连接Redis数据库
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    # 设置键值对
    r.set('name', 'Tom')
    
    # 获取键值对
    name = r.get('name')
    print(name)
    

    在上面的示例中,首先使用redis.Redis()方法连接Redis数据库,然后使用r.set()方法设置键值对,使用r.get()方法获取键值对。其中,host参数指定Redis服务器的IP地址,port参数指定Redis服务器的端口号,db参数指定Redis数据库的编号。如果没有指定db参数,则默认使用编号为0的数据库。

    除了set()get()方法,redis-py库还提供了多种操作Redis数据库的方法,包括incr()decr()hset()hget()lpush()rpush()lrange()sadd()smembers()zadd()zrange()

    连接Redis数据库

    import redis
    
    # 连接Redis数据库
    r = redis.Redis(host='localhost', port=6379, db=0)
    

    设置键值对

    # 设置键值对
    r.set('name', 'Tom')
    

    获取键值对

    # 获取键值对
    name = r.get('name')
    print(name)
    

    删除键值对

    # 删除键值对
    r.delete('name')
    

    设置过期时间

    # 设置过期时间
    r.setex('name', 10, 'Tom')  # 10秒后过期
    

    判断键是否存在

    # 判断键是否存在
    if r.exists('name'):
        print('name exists')
    else:
        print('name does not exist')
    

    自增自减

    # 自增
    r.incr('count')
    # 自减
    r.decr('count')
    

    以上是Redis库的基本操作

    2.python-redis对string类型的操作

    Redis是一种内存键值对存储数据库,支持不同类别的数据类型,其中之一是string类型。字符串类型是Redis中最基本的数据类型。下面是一些操作Redis中String类型的基本操作:

    ①.设置String

    我们可以使用set()方法设置String。如果键不存在,则创建一个新键并存储字符串值。如果键已经存在则覆盖该键的旧值。例如:

    import redis
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    r.set('key', 'value')
    

    这将在Redis中创建一个名为“key”的键,并将其值设置为“value”。

    ②.获取String

    我们可以使用get()方法来获取String的值。例如:

    value = r.get('key')
    

    这将返回名为“key”的键的当前值。

    ③.删除String

    我们可以使用delete()方法来删除String。例如:

    r.delete('key')
    

    这将删除名为“key”的键。

    ④.操作String

    Redis还提供了许多其他操作String的方法,例如:

    • append(key, value):将value附加到key的末尾。
    • incr(key[, amount]):递增名为“key”的键的值,可加+1或加自定义数值amount。
    • decr(key[, amount]):递减名为“key”的键的值,可减-1或减自定义数值amount。
    • setnx(key, value):仅在键“key”不存在时设置键的值为“value”。
    • getset(key, value):将键“key”的值设置为“value”,并返回键“key”之前的值。

    例如,增加"in_stock"键的值2:

    r.set("in_stock",10)
    r.incr("in_stock",2) 
    print(r.get("in_stock"))
    

    这将返回12,因为"in_stock"键的值从10增加了2。

    这是Redis中一些对String类型基本的操作,我们还可以使用其他方法,根据具体应用需求进行选择和使用。

    相关文章

      网友评论

        本文标题:跟我一起从零开始学python(五)数据库编程:Redis数据库

        本文链接:https://www.haomeiwen.com/subject/pjusudtx.html