细说redis数据类型

本文主要讲解redis的6种数据类型

string

redis的string可以存储3种数据类型:string,整数和浮点数。

常见的操作如下

命令名称

示例

描述

set

set key value

设置键值对

get

get key

获取值

incr

incr key

递增值

decr

decr key

递减值

strlen

strlen key

获取字符串长度

incrby

incrby key increment

增加指定数字

decrby

decrby key decrement

减少指定数字

append

append key

value

向尾部添加值

getset

getset

key

value

取值并赋值

setnx

setnx

key

value

当value不存在时赋值

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS),采用预分配冗余空间减少内存的频繁分配,当value长度小于1m时,每次扩大1倍,当大于1m时每次多分配1m的空间,最大为512m。

使用场景

①计数器

②共享session

③setnx实现分布式锁

list

list是列表结构,可以存储有序、可重复的元素,获取头部或尾部附近的记录是极快的

list的元素个数最多为2^32-1个(40亿)

命令名称

示例

描述

lpush

lpush key v1,v2…

列表左边插入

lpop

lpop key

列表左边弹出

rpush

rpush key v1,v2…

列表右边插入

rpop

rpop key

列表右边弹出

lpushx

lpushx key value

将数值插入列表头部

rpushx

rpushx key value

将值插入列表尾部

llen

llen key

获取列表中元素个数

lindex

lindex key index

获取列表中的下标

lrange

lrange key start end

返回列表中指定区间的元素,区间通过start和end指定

lrem

lrem key count

value

删除列表中与value相等的元素

当count>0时, lrem会从列表左边开始删除;当count<0时,

lrem会从列表后边开始删除;当count=0时, lrem删除所有值

为value的元素

lset

lset key index

value

将列表index位置的元素设置成value的值

ltrim

ltrim key start

end

对列表进行修剪,只保留start到end区间

rpoplpush

rpoplpush

key1 key2

从key1列表右侧弹出并插入到key2列表左侧

brpoplpush

brpoplpush

key1 key2

从key1列表右侧弹出并插入到key2列表左侧,会阻塞

list底层有多种数据类型,数据量少的时候是ziplist压缩列表,内存是连续分配的,当元素个数超过某个值时转为linkedlist双向链表,redis3.2之后数据量较多时改为quicklist。因为普通的链表需要附加指针空间,会浪费空间,加重内存碎片化。redis将链表和ziplist结合组成quicklist。

使用场景:

①用户列表,商品列表,评论列表等

②消息队列

③栈

set

无序不重复,集合中最大的成员数为 2^32 – 1

命令名称

示例

描述

sadd

sadd key v1 v2…

为集合添加新成员

srem

srem key v1 v2 …

删除集合指定成员

smembers

smembers key

获取集合中所有元素

spop

spop key

返回集合中一个随机元素,并将该元素删除

srandmember

srandmember key

返回集合中一个随机元素,不会删除该元素

scard

scard key

获取集合中的数量

sinter

sinter key1 key2 …

求多集合的交集

sdiff

sdiff key1 key2…

求多集合的差集

sunion

sunion key1 key2…

求多集合的并集

set底层有两种数据结构,一种是inset数组,另一种是hashtable,如果保存的所有值都是整数且个数不超过512个则使用inset数组,否则使用hashtable

使用场景:

①统计网站uv

②统计共同好友

sortedset

有序集合,可以通过设置分数来对元素进行排序,元素不能重复,分数可以

命令名称

示例

描述

zadd

zadd key score1 v1 score2 v2…

为集合添加新成员

zrem

srem key v1 v2 …

删除集合指定成员

zcount

zcount key min max

返回分数在[min,max]区间内的元素数量

zincrby

zincrby key increment member

在集合的member分值上加increment

zrank

zrank key member

获取集合中member的排名(按分值从小到大)

zrevrank

zrevrank key member

和zrank相反

zrange

zrange key start end

获取集合中指定区间成员,按分数递增排序

zrevrange

zrevrange key start end

和zrange相反

zset底层是采用ziplist和skiplist结构,ziplist就是地址连续的压缩链表,按照分值从小到大排序,在满足一定条件下会转换成skiplist,即跳表。

使用场景:

①排行榜

hash

String 类型的 field(域)和 value(值)的映射表,每个hash可以存储2^32-1个键值对

命令名称

示例

描述

hset

hset key field value

赋值

hmset

hmset key field1 value1 field2 value2…

批量赋值

hsetnx

hsetnx key field value

赋值,如果值存在则不操作

hget

hget key field

获取一个字段

hmget

hmset key field1 field2

获取多个字段值

hgetall

hgetall key

获取所有值

hdel

hdel key field

删除指定字段

hincrby

hincrby key field increment

指定字段自增increment

hlen

hlen key

获取字段数量

底层使用hashtable存储数据

使用场景

①存储对象,应用在频繁写操作的场景,string主要用在频繁读操作场景

BitMap

BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现。

命令名称

示例

描述

setbit

setbit key offset value

设置key在offset处的bit值,只能是0或者1

getbit

getbit key.offset

获取key在offset处的bit值

bitcount

bitcount key

获取key的bit位为1的个数

bitpos

bitpos key value

获取第一个值为value的bit的位置

bitop

bitop and[or/xor/not] destkey key

[key …]

对多个key 进行逻辑运算后存入destkey

使用场景:

①布隆过滤器

②统计用户每月签到,用户id为key,日期作为偏移量

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年8月11日
下一篇 2022年8月11日

相关推荐

  • 注意了,华为交换机新版本开启telnet SSH发生变化了

    V200R020C00及之后版本,缺省情况下Telnet服务器端不接收来自任何接口登录连接的请求,当需要授权客户可以登录服务器时,需要执行如下任一命令指定Telnet服务器端的源接…

    2022年6月16日
  • 在世界智能大会,寻找制造业未来

    制造业如何转型升级,走向更美好未来,刚刚结束的第六届世界智能大会给出了答案。 先来看一组数据。 AI蓝媒汇简单计算了一下,在24日上午两小时零八分钟的高峰论坛中,12位专家、企业家…

    2022年6月27日
  • java中集合求并集、差集以及交集方法你知道多少?

    服务端开发中,经常做的处理就是数据组装,而数据组装中集合处理算是”出镜率”最高的,今天就来简单聊一下集合中求并集、差集以及交集方法。 实际开发中常用处理方式…

    2022年6月17日
  • 一条命令重装Windows所有内置应用,解决了莫名其妙“卡”的问题

    前言 今天一位朋友向我求助,说他的电脑很奇怪:刚开机的时候一切正常,但过上几分钟除了之前打开的程序,后面就什么都点不了了!桌面点不了、任务栏点不了,连任务管理器都打不开。。但是前面…

    2022年6月19日
  • 金泰亨Jennie济州岛旅游合照疑曝光 两人模仿鹦鹉拍照

    9月16日,防弹少年团成员金泰亨、BLACKPINK成员JENNIE一起前往济州岛旅游的合照疑似曝光,照片中两人模仿一旁的鹦鹉拍照,很是甜蜜。随后有网友指出,被曝出的图片中金泰亨穿…

    2022年9月17日
  • 文创雪糕“出圈”的启示

    【网言】 作者:张冬梅 打开包装,手持雪糕对着景点、地标拍照“打卡”,发社交平台,一气呵成——在景区,许多人尤其是年轻人都会来上这样一套“规范”动作。当下,放眼全国,越来越多旅游景…

    2022年8月13日
  • 为什么不建议你用 MongoDB 这类产品替代时序数据库?

    小 T 导读:此前有人在某问答网站上发布了这样一个问题:既然部分时序数据库如 InfluxDB、TimescaleDB 是基于关系型、非时序数据库 PostgreSQL 开发而来,…

    2022年6月19日
  • 第五届数字中国建设30项最佳成果出炉

    【环球网科技综合报道】7月26日消息,第五届数字中国建设成果展览会最佳成果颁奖仪式近日在海峡国际会展中心举办,现场发布了30项优秀成果。 活动前期向本届参展单位进行了广泛征集,共1…

    2022年7月28日
  • 《梦华录》爽文背后的人血馒头,现在的剧吃够了没

    《梦华录》最近很火,作为一个刘亦菲的颜粉,去看了一下,看完后不禁感叹:现在的剧除了颜值和营销什么剧情都不要了吗? 最为让人细思极恐的地方,就是他把:“血统论”、“自我之上人人平等,…

    2022年7月7日
  • 共享农场小程序,运营更方便,更值得信赖

    “认养农业”是近年来受“互联网+物联网+农业”影响下萌生出的新式概念 认养种植农业是现在非常炽热的一种开展模式,顾客租地种植预付出产费用,出产者为顾客提供绿色、有机食物。 认养种植…

    2022年6月14日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息