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

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

lrange 按区间取元素

3.rpsh rpop 和 lpsh lpop:

取完数据就是返回 (nil)

组合 先进先出

先进后出组合

redis 集合set类型

Set类型

常用命令:

sadd(向集合中添加元素)、srem(删除集合中的元素)、

smembers(获取集合中的元素)、scard(获取集合中的元素个数)、sismember(判断元素在集合中是否存在)、

srandmember(从集合中随机获取指定个数的元素)、

spop(从集合中随机获取指定个元素并从集合中移除)、

sinter(集合取交集)、sinterstore(集合取交集并存入到指定集合)、

sunion(集合取并集)、sunionstore(集合取并集并存入到指定集合)、

sdiff(集合取差集)、sdiffstore(集合取差集并存入到指定集合)

zset 类型

有序集合(zset)就是可以排序的set,通过每个元素关联的score值来为元素进行从小到大的排序,zset中元素不能重复,但是score却可以重复

结果:

一、问题描述

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',.....})

# -*- 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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值