python-Django-redis 数据操作

python-Django-redis 数据操作

数据类型

1. 数据类型

Redis 数据库中没有表的概念,存储的数据都是 Key-Value 数据结构,每条数据都是一个键值对,Key都是字符串,具体 Value 分为 5 种数据类型:

1)string:字符串

# 结构类似于 Python 中的字符串
Key: "字符串值"

2)list:列表

# 结构类似于 Python 中的列表
Key:["元素1", "元素2", ...]

3)hash:哈希

# 结构类似于 Python 中的字典
Key: {"字段名1": "值1", "字段名2": "值2", ...}

4)set:集合

# 元素无序,且唯一
Key: ("元素1", "元素2", ...)

5)zset:有序集合

# 元素有序,且唯一
Key: ("元素1", "元素2", ...)

针对于上面的每一种 Redis 数据类型,Redis 都提供了相应的增、删、改、查的指令。

string-字符串


字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是以二进制存储的,这便意味着该类型可以接受任何格式的数据,如:JPEG 图像数据 或 Json 对象描述信息等。在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是 512M。

# 设置键值,如果设置的键不存在则为添加,如果设置的键已经存在则修改
set key value
# 获取指定 key 对应的 value 值
get key
# 设置键值及过期时间,以秒为单位
setex key seconds value
# 一次设置多个 key-value 数据
mset key1 value1 key2 value2 ...
# 一次获取指定多个 key 对应的 value 值
mget key1 key2 ...
# 向指定 key 对应的 value 值后追加内容
append key value

list-列表


列表 value 中的每个元素的值都为 string,不能为其他类型,元素按照插入顺序排序。

# 从列表左侧插⼊数据
lpush key value1 value2 ...
# 从列表右侧插⼊数据
rpush key value1 value2 ...
# 在列表指定元素的前或后插⼊新元素
linsert key before或after 现有元素 新元素

# 获取列表里指定范围内的元素
# 命令说明:
# start、stop为元素的下标索引
# 索引从左侧开始,第⼀个元素为0
# 索引可以是负数,表示从尾部开始计数,如 -1 表示最后⼀个元素的索引
lrange key start stop
# 设置列表指定索引位置的元素值
lset key index value

# 删除列表中的指定元素
# 将列表中前 count 次出现的值为 value 的元素移除
# count > 0:从头往尾移除
# count < 0:从尾往头移除
# count = 0:移除所有
lrem key count value

hash-字典


hash⽤于存储对象数据,对象的结构为属性、值,类似 Python 中的字典结果,但值的类型只能为 string。

# 设置 hash 中单个属性和值
hset key field value
# 一次设置 hash 中多个属性和值
hmset key field1 value1 field2 value2 ...
# 获取指定 hash 键所有的属性
hkeys key
# 获取 hash 中指定单个属性的值
hget key field
# 一次获取 hash 中指定的多个属性的值
hmget key field1 field2 ...
# 获取指定 hash 键所有属性的值
hvals key
# 删除 hash 指定的属性,属性对应的值会被⼀起删除
hdel key field1 field2 ...

set-无序集合


⽆序集合数据,每个元素类型为 string,集合中的元素具有唯⼀性,对于集合没有修改操作。

# 向指定 set 集合中添加元素
sadd key member1 member2 ...
# 获取指定 set 集合中的所有元素
smembers key
# 删除 set 集合中的指定元素
srem key member1 member2 ...

zset-有序集合


# 向指定 zset 集合中添加元素
zadd key score1 member1 score2 member2 ...

# 获取 zset 集合中指定范围内的数据
# start、stop为元素的下标索引
# 索引从左侧开始,第⼀个元素为0
# 索引可以是负数,表示从尾部开始计数,如 -1 表示最后⼀个元素的索引
zrange key start stop

# 获取 zset 集合中 score 在 min 和 max 之间的元素
zrangebyscore key min max
# 获取 zset 集合中指定元素的 score
zscore key member

# 删除 zset 集合中的指定元素
zrem key member1 member2 ...
# 删除 zset 集合中 score 在 min 和 max 之间的元素
zremrangebyscore key min max

key 操作


Key 命令是针对于 Redis 中各种数据类型的 Key 进行操作的命令。

# 显示当前 Redis 数据库中有哪些 key,pattern 支持正则表达式
keys pattern
# 判断 key 是否存在,存在返回1,不存在返回0
exists key
# 查看 key 对应的 value 的类型
type key
# 删除指定 key 及其对应的 value
del key1 key2 ...
# 设置指定 key 的过期时间
# 如果没有指定过期时间则⼀直存在,直到使⽤ del 删除
expire key seconds
# 查看指定 key 的剩余有效时间
ttl key
# 清空库的键值
flushall

python 操作redis

hash
  • hincrby(key,filed,value)

    根据对应的键,给对应的filed添加值,若filed不存在,则为添加,若filed存在,则为累加

# 给hash中field属性值累加一个value,如果field不存在,新建一个属性和值,例如
# 如果用户的购物车记录中已经添加过该商品,数量需要进行累加
# 如果用户的购物车记录中没有添加过该商品,设置一个新的属性和值
# hincrby(key, field, value): 给hash中field属性值累加一个value,如果field不存在,新建一个属性和值
redis_conn.hincrby(cart_key, sku_id, count)  # sku_id商品的id,count商品的数量

  • hgetall(key)

    以字典的形式 { filed : value } 返回 hash 中所有的 filed 和 value

# 返回hash中所有属性和值
cart_redis = redis_conn.hgetall(cart_key)  # dict
  • hset(key,filed,value)

    将 hash 数据中指定的 filed 属性设置为 value

 # hset(key, field, value): 将hash中指定属性field的值设置为value
 pl.hset(cart_key, sku_id, count)
  • hdel(key, *fileds)

    删除hash中对应的属性和值,有则删除,无则忽略

# hdel(key, *fields): 删除hash中对应的属性和值,有则删除,无则忽略
pl.hdel(cart_key, sku_id)
  • hkeys(key)

    返回 hash 中所有的属性filed

 # hkeys(key): 返回hash中所有属性
 # [b'<sku_id>', b'<sku_id>', ...]
 sku_ids = redis_conn.hkeys(cart_key)  # list
  • hvals(key)

    返回 hash 中所有属性的值values

 # hkeys(key): 返回hash中所有属性
 # [b'<sku_id>', b'<sku_id>', ...]
 sku_ids = redis_conn.hvals(cart_key)  # list
set
  • sadd(key, *members)

    向set中添加元素,元素唯一

# 向set中添加元素,不需要关注是否重复,set中元素唯一
# sadd(key, *values): 向set中添加元素,不需要关注是否重复,set中元素唯一
redis_conn.sadd(cart_selected_key, sku_id)  # sku_id商品的id
  • smembers(key)

    获取set中所有的元素

# 获取set中所有元素
 sku_ids = redis_conn.smembers(cart_selected_key)
  • srem(key,*members)
# srem(key, *members): 从set中移除元素,如果元素不存在,直接忽略
pl.srem(cart_selected_key, sku_id)

django-redis 中文官方文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/
redis-py 官方文档:https://redis-py.readthedocs.io/en/stable/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值