Redis五类数据类型简述
1. Redis五类数据类型
在Redis数据库中一共存在5种数据类型:
- string 字符串(可以为整形、浮点型和字符串,统称为元素)
- Hash hash散列值(hash的key必须是唯一的)
- list 列表(实现队列,元素不唯一,先入先出原则)
- set 集合(各不相同的元素)
- sort set 有序集合
1.1 string数据类型
对整个字符串或者字符串的其中一部分执行操作;对整数和浮点数执行自增(increment)或者自减(decrement)操作,Redus的字符串和其他变成语言或者其他键值存储提供的字符串非常相似。
Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着他们的长度不由任何特殊的终止字符决定。因为,可以在一个字符串中存储高达512兆字节的任何内容
1.1.1 特色常用命令
- Get :获取存储在给定键中的值
- Set :设置存在在给定键中的值
- incr :将键存储的值上加上1
- decr :将键存储的值上减去1
- incrby:将键存储的值上加上整数amount
- decrby:将键存储的值上减去整数amount
- incrbyfloat:将键存储的值上加上浮点数amount(该命令在Redis2.6或以上的版本可用)
其他命令可通过帮助,官网或者学习资料查找
1.1.2 注意事项
在Redis中字符串类型的Value最多可以容纳的数据长度是512M
1.2 Hash 哈希散列
键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射,但字段值既可以是字符串又可以是数值。因此,他们用于表示对象。因此一般可以采用Json的方式进行交互,同时可以对散列存储的数字值执行自增操作或自减操作
1.2.1 特色常用命令
- HMGET:从散列里面获取一个或多个键的值
- HMSET:为散列里面的一个或多个键设置值
- HDEL:删除散列里面的一个或者多个键值对,返回成功找到并删除的键值对数量
- HLEN:返回散列包含的键值对数量
1.2.2 注意事项
- 节约空间(使用zipmap的紧密摆放的存储模式)
- 更新、访问方便
- Hash数据很像关系型数据库的表的一行数据,但是字段是可以随意定制的,没有严格约束的,非常灵活
1.3 Set 集合
Set无序去重,Redis的集合以无序的方式来存储过的各不相同的元素,用户可以快速的对集合执行添加元素操作、一处元素操作以及检查一个元素是否存在于集合中
1.3.1 特色常用命令
- SADD:将一个或多个元素添加到集合里,并返回呗添加元素当中原本并不存在于集合里面的元素数量
- SREM:从集合里面移除一个或多个元素,并返回被移除元素的数量
- SISMEMBER:检查元素item是否存在于集合key-name里
- SCARD:返回集合包含的元素的数量
- SMEMBERS:返回集合包含的所有元素
- SRANDMEMBER:从集合里面随机地返回一个或多个元素。当count为正数时,命令返回的随机元素不会重复,当count为负数时,命令返回的随机元素可能回出现重复
- SPOP:随机的移除集合中的一个元素,并返回被移除的元素
- SMOVE:如果集合source-key包含元素item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中:如果item被成功移除,那么命令返回1,否则返回0
1.4 ZSET
ZSet有序去重,有序集合的值被称为分值,分值必须时浮点数。有序集合时Redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分治的排列顺序来访问元素的结构
—ps:具体的解释就是,英雄联盟比赛的时候打赏,然后能够实时的返回顺序。(对我就是各loler,尽管现在不怎么玩了,可能是因为菜吧)
1.4.1 特色常用命令
- ZADD:将带用给定分值的成员添加到有序集合里面
- ZREM:从有序集合里面移除给定的成员,并返回被移除成员的数量
- ZCARD:返回有序集合包含的成员数量
- ZINCRBY:将member成员的分值加上increment
- ZCOUNT:返回分值介于min和max之间的成员数量
- ZRANK:返回成员member在有序集合中的排名
- ZSCORE:返回成员member的分值
- ZRANGE:返回有序集合中排名结语start和stop之间的成员,如果给定了可选的WithSORES选项,那么命令将成员的分值也一并返回
1.5 LIST链表
Redis对链表(linked-list)结构的支持使得它在键值存储的世界中独树一帜,一个列表结构可以有序的存储多个字符串。
1.5.1 特色常用命令
RPUSH:将一个或多个值推入到列表的右端
LPUSH:将一个或多个值推入到列表的左端
RPOP:移除并返回列表最右端的元素
LPOP:移除并返回列表最左端的元素
LINDEX:返回列表中偏移量为offset的元素
LRANGE:返回列表从start偏移量到end偏移量范围内的所有元素,其中偏移量为start和偏移量为end的元素也会包含在被返回的元素中
LTRIM:对列表进行修剪,只保留从start偏移量到end偏移量范围内的元素,其中偏移量start和偏移量为end的元素也会被保留。
2. 应用场景
2.1 redis一般应用场景
- 缓存会话(单点登录)
- 分布式锁,比如:使用setnx
- 各种排行榜或计数器
- 商品列表或用户基础数据列表等
- 使用list作为消息队列
- 秒杀,库存扣减等
2.2 五种类型的应用场景
String,redis对于KV的操作效率很高,可以直接用作计数器。例如,统计在线人数等等,另外string类型是二进制存储安全的,所以也可以使用它来存储图片,甚至是视频等。
hash,存放键值对,一般可以用来存某个对象的基本属性信息,例如,用户信息,商品信息等,另外,由于hash的大小在小于配置的大小的时候使用的是ziplist结构,比较节约内存,所以针对大量的数据存储可以考虑使用hash来分段存储来达到压缩数据量,节约内存的目的,例如,对于大批量的商品对应的图片地址名称。比如:商品编码固定是10位,可以选取前7位做为hash的key,后三位作为field,图片地址作为value。这样每个hash表都不超过999个,只要把redis.conf中的hash-max-ziplist-entries改为1024,即可。
list,列表类型,可以用于实现消息队列,也可以使用它提供的range命令,做分页查询功能。
set,集合,整数的有序列表可以直接使用set。可以用作某些去重功能,例如用户名不能重复等,另外,还可以对集合进行交集,并集操作,来查找某些元素的共同点
zset,有序集合,可以使用范围查找,排行榜功能或者topN功能。
Redis五类数据类型简述相关推荐
- Redis五种数据类型及应用场景
Redis五种数据类型及应用场景 MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...
- redis五种数据类型对应的底层数据结构
redis五种数据类型对应的底层数据结构 redis的五种数据类型 redis核心对象redisObject type数据类型 encoding编码类型 ptr指针 redis五种数据类型对应的底层数 ...
- Redis五种数据类型介绍
概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...
- redis五种数据类型的使用场景
string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- Redis五种数据类型及命令(一)
Redis 五种数据类型详解及命令 Redis五种数据类型分别为: String:最基本的字符串类型. list:列表(如果对比java来看,这个list不是ArrayList,而是LinkedLis ...
- redis五种数据类型及其常见操作
redis五种数据类型及其常见操作 Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 1.strin ...
- Redis五种数据类型
Redis五种数据类型:字符串 String,哈希 hash,列表 list ,集合 set,有序集合 softed set String(字符串) • 二进制安全,可存储任何数据,如图片或者序列化对 ...
- redis五种数据类型的应用场景_Redis五种不同的数据类型
一.redis集群测试环境搭建 参考文章:https://www.jianshu.com/p/0a2f8f80983a redis-cli -c -h 10.96.87.129 -p 7001注意:- ...
- (转) 淘淘商城系列——Redis五种数据类型介绍
http://blog.csdn.net/yerenyuan_pku/article/details/72855562 Redis支持五种数据类型:string(字符串),hash(哈希),list( ...
最新文章
- 使用Cookie记录信息
- wpsarm64linux,WPS Office 2019 For Linux 11.1.0.9080版发布下载,附更新介绍和安装
- 2021-04-28 Python可视化图表生成-Matplotlib绘图
- java 对增删该查进行测试_java连接mysql增删改查测试通过
- oracle 0值处理判断,ORACLE数据统计0的处理
- 在windows上编译apr等相关动态库
- C++PrimerCH1
- (回溯4)部分全排列
- 怎么打开jsp文件目录_ppt转换成pdf怎么转?我选择这个办法
- LeetCode-210 Course Schedule II
- Dalvik 与 ART 区别
- 情感分析入门[2]-一些数学工具
- 电动车的蓄电池与锂电池
- origin数据平滑_Origin平滑曲线的使用方法
- 1-7-2 查询水果价格分数
- 【C】求函数的定积分
- seo文案策划的一些日常工作内容
- 白杨SEO:谈谈如何让微信公众号排版设计好看又实用?
- 安装出错:Command line option syntax error.Type Command /? for help.解决方案
- html中实现雪花飞舞,京东双12年终盛宴雪花飞舞3D视觉特效
热门文章
- [Android Pro] 将你的安卓手机屏幕共享到PC或Mac上
- 向量中断和非向量中断的区别
- 修改数据库表的某一字段长度
- Android 文件下载中文名乱码的解决办法
- 十行代码将Redis缓存数据进行分页提取与展示
- linux怎么做bt种子文件,linux 制作BT种子并获取BT种子信息
- php redis 存入数组,php redis 多维数组操作
- Susan Sontag【苏珊·桑塔格】
- 51nod 1770数数字(找规律)
- mysql reorg 命令_DB2 runstats、reorgchk、reorg 命令