美文网首页Python
redis增删改查 常用数据结构的python操作

redis增删改查 常用数据结构的python操作

作者: 程序里的小仙女 | 来源:发表于2020-06-19 14:53 被阅读0次

参考:redis常用数据结构以及使用场景举例

1.lpush + lpop 从左边存,从左边取(先进后出)


  1. lrange 按区间取元素


3.rpsh rpop 和 lpsh lpop:
取完数据就是返回 (nil)


  • 组合 先进先出



  • 先进后出组合


  1. redis 集合set类型
    Set类型


常用命令:

sadd(向集合中添加元素)、srem(删除集合中的元素)、
smembers(获取集合中的元素)、scard(获取集合中的元素个数)、sismember(判断元素在集合中是否存在)、
srandmember(从集合中随机获取指定个数的元素)、
spop(从集合中随机获取指定个元素并从集合中移除)、
sinter(集合取交集)、sinterstore(集合取交集并存入到指定集合)、
sunion(集合取并集)、sunionstore(集合取并集并存入到指定集合)、
sdiff(集合取差集)、sdiffstore(集合取差集并存入到指定集合)
  1. zset 类型
    有序集合(zset)就是可以排序的set,通过每个元素关联的score值来为元素进行从小到大的排序,zset中元素不能重复,但是score却可以重复



    结果:


python操作redis报错:redis.exceptions.DataError: ZADD allows either 'nx' or 'xx', not both解决方案

一、问题描述
sorted set操作执行:print(connect.zadd('grade', 'bob', 98, 'mike' ,100))时报错redis.exceptions.DataError: ZADD allows either 'nx' or 'xx', not both
二、出现该问题原因
上面的connect.zadd('key','value1','score1','value2','score2')写法是redis-py 3.0之前的版本
在redis-py 3.0版本之后,写法变为:connect.zadd('grade', {'bob':100, 'mike':99, 'lucy':87})这种写法了,所以会报错
三、解决方案
更改写法为:connect.zadd('key',{'value1':'score1','value2':'scote2',.....})

  1. 实例(异步和同步)
    # Redis的有序集合操作命令
# -*- coding: utf-8 -*-
"""
 @Time   : 2020/6/11 13:38 
 @Athor   : LinXiao
 @功能   :
"""
# ------------------------------
import redis
import asyncio
import aioredis

loop = asyncio.get_event_loop()

async def go():
    redis = await aioredis.create_redis(
        ('localhost', 6379), loop=loop)
    await redis.set('my-key', 'value')
    val = await redis.get('my-key')
    print(val)
    del1 = await redis.delete('my-key')
    redis.close()
    await redis.wait_closed()
loop.run_until_complete(go())


def redis_operation():
    # 有序集合(zset)
    # 就是可以排序的set,通过每个元素关联的score值来为元素进行从小到大的排序,zset中元素不能重复,但是score却可以重复
    r=redis.Redis(host="localhost", port=6379)
    # 添加元素并排序
    # r.zadd("aa",{"v1":11,"v2":22,"v3":111,"v4":2,"v22":242,"v34":11441,"v444":21})

    # 删除元素
    # r.zrem("aa","v2")

    # 返回区间元素并排序  desc=False 时就从小到大取,反之.
    # b = r.zrange("aa",0,2,desc=True)
    # print(str(b))
    # 返回 [b'v4', b'v1', b'v444']

    # zcard key:返回key的基数,key不存在时返回0
    # b = r.zcard("aa")
    # print(b) # 7
    # zcount key min max:返回key中score值在min和max之间(包括min和max)的成员的数量

    b = r.zrank("aa","v2")
    print(b)
    # zrank key member:返回key中成员member的排名(从0开始),如果member不是key的成员返回None
    # zrevrank key member:返回key中成员member逆序排序(按score值从大到小)后的排名(从0开始)




if __name__ == '__main__':
    redis_operation()

相关文章

  • python获取redis的数据信息

    python操作redis增删改查 单机模式 集群模式

  • redis增删改查 常用数据结构的python操作

    参考:redis常用数据结构以及使用场景举例 1.lpush + lpop 从左边存,从左边取(先进后出)...

  • 浅谈Redis持久化

    大家都知道Redis增删改查的操作比MYSQL增删改查操作要快。原因是MYSQL的增删改操作是在硬盘上直接操作,而...

  • python 目录操作

    本文从增删改查角度,演示几种常用的 Python 目录操作 前提:引入os 模块, import os 创建目录...

  • Python

    Python 创建文件 Python 对数据库进行操作--增删改查 Python 对csv进行操作 Python ...

  • 三、Groovy语法(三):数据结构

    Groovy中常用的数据结构 一、列表 列表的定义 列表的操作(增、删、查、排) list新增 lis...

  • MySQL增删改查(3)

    前面梳理了增删改查的增、删、改,本篇主要是最常用的查的最基础部分。以下面这张表的来梳理 查操作通常是查一行或者多行...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

  • Day 2

    熟悉Linxu,gi,vim操作 熟悉Python的语法 熟悉MongoDB的增删改查操作 用Python + g...

网友评论

    本文标题:redis增删改查 常用数据结构的python操作

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