Redis数据基本操作

概述

  • redis数据保存在内存
  • redis命令不区分大小写,一般用小写
  • redis是一个单线程、但进程的数据库

字符串

  • 用来记录简单的映射关系,用于小量级的数据记录
  • 虽名为字符串,但也可以存储数字
  • 获取的key的值不存在,则返回None
// 列出所有
keys *
// 创建
set key value
// 获取,若获取不存在的key则返回(nil)
get key
// 修改
set key 新的值
// 修改不覆盖
set key value NX
// 尾部添加其他字符
append key value
// 值有空格要用双引号包起来
set key "word1 word2 word3"
// 让key里的值+1
incr key
// 让key里的值+n
incrby key n
// 让key里的值-1
descr key
// 让key里的值-n
descrby key n

列表(Lists)

  • 一个列表可以保存几百万数据,不要冒然列出所有数据
  • 一般用作一个队列,存放一批可以使用相同逻辑处理的数据
  • JSON格式的字符串,从redis中读取出来为bytes。decode()
// 插入数据
lpush key value1 value2 value3
rpush key value1 value2 value3
// value有空格则用双引号包含
lpush example_list "are you ok?"
// 获取列表长度
llen key
// 根据索引查看数据,从左开始第一个为0,-1为最右边的数据
// 查看2到5的数据 包含2、5
lrang example_list 2 5
// 查看所有数据
lrang example_list 0 -1
// 弹出数据,弹出的数据会被删除
lpop key
rpop key
// 修改数据
lset key index 新的值
// 保留一段数据并删除其他数据
ltrim key startPostion(含) endPositon(含)

集合(Sets)

  • 集合里的数据没有顺序也不能重复,插入重复的值将被忽略
  • 可用于去重并记录信息
// 添加
sadd key value1 value2 value3
// 查询集合里元素的数量card(cardinality)
scard key
// 从集合中随机获取数据,count为数量 默认1,获取后数据被删除
spop key count
// 获取集合所有数据,数据不会被删除,数据量极大时慎用
smembers key
// 检查是否包含某个元素,存在返回1 不存在返回0
sismember key value
// 从集合中删除
srem key value1 value2 value3
// 求集合交集
sinter key1 key2 key3
// 求并集
sunion key1 key2 key3
// 求差集,只属于一个集合的数据
sdiff key1 key2 key3

Hash

  • 无论多少个键值对,查询时间始终不变,一个哈希表可以存储43亿个键值对
  • 经过特殊优化,存储相同的内容占用内存比字符串小很多(字符串保存100万个键值对需要21GB,哈希表只需要5GB)
// 添加数据,hset一次添加一个数据,hmset添加多个数据
client.hset('key', '字段名', '值')
client.mhset('key', {'字段名': '值','字段名': '值'})
// hkeys 获取所有字段的字段名,返回的数据是包含bytes型数据的列表
client.hkeys('哈希表名')
// hget获取一个字段的值
client.hget('哈希表名', '字段名')
// hmget 获取多个字段的值
client.hmget('哈希表名', ['字段1','字段2'])
// hgetall 获取所有字段的值,返回的key和value是bytes型数据,要查询里面的结果也要用bytes型数据
client.hgetall('哈希表名')
// 判断字段是否存在
hexitsts 哈希表名 字段名
// 获取字段数量
hlen 哈希表名

发布订阅

  • 一对多的消息实时发布功能
publish 频道名 信息
subscribe 频道名1 频道名2 频道名3

有序集合(Sorted Set)

  • 不能重复,但是每一元素都关联了score,根据这个分数可以对元素进行排序,分数可以重复
// 添加数据
zadd 有序集合名 评分1 值1 评分2 值2
// 修改评分,不存在则创建
zincrby 有序集合名 修改的分数 值
// 基于评分范围排序,WITHSCORES省略后只有值没有评分, LIMIT 切片开始位置 结果数量也可以省略
zrangebyscore 有序列表名 评分下限 评分上限 WITHSCORES LIMIT 切片开始位置 结果数量
zrevrangebyscore 有序列表名 评分下限 评分上限 WITHSCORES LIMIT 切片开始位置 结果数量
// 基于位置范围查询,zrange从小到大
zrange 有序集合名 开始位置 结束位置
zrverange 有序集合名 开始位置 结束位置 WITHSCORES
// 查询值的排名
zrank 有序集合明 值
zrevrank 有序集合明 值
// 查询值的评分
zscore 有序集合名 值
// 查询集合元素个数
zcard 有序集合名
// 查询评分范围内的元素个数
zcount 有序集合名 积分下限 积分上限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值