Redis——五大数据类型详解

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间 件MQ。

官网对于redis的介绍

官网对于redis的介绍

----Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间 件MQ。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合 (sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间 (geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU 驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

五大基本类型的操作及使用场合

Redis-Key

查看所有的key

keys *

查看key是否存在

EXISTS key

移除key

move key num

设置key的过期时间

EXPIRE key second

查看key的过期时间

ttl key

查看当前key的类型

type key

String字符串类型

设置key的值

set key value

获取key的值

get key

追加key的值

如果key不存在 就相当于 set key

APPEND key value

查看key的值的长度

STRLEN key

自增自减的功能

#自增
incr key
#自减
decr key

自增多少个 num:自增个数

incrby key num

自减多少个

decrby key num

字符串范围 range

GETRANGE key start end
#示例 截取0-3个字符串
GETRANGE key 0 3
获取全部字符串
GETRANGE key 0 -1
替换字符串
SETRANGE key offset value

设置字符串过期

setex key seconds value #(设置过期时间)
setnx key value #不存在设置(分布式锁中常常用到)
#setnx key  如果这个key存在 创建失败
#setnx key  如果不存在 创建成功

一次性设置多个值

key 存在就不创建

 mset key value [key value ...]

设置多个值 要么同时成功,要么同时失败 原子性操作

msetnx key value [key value ...]
设置对象
设置user:1对象 值为json字符串来保存一个对象

先get后set命令

getset key value

如果不存在,返回nill 设置值

如果存在值,返回值,更新值

String类似的使用场景:value除了是我们的字符串还可以是我们的数字!

例如:

 计数器

 统计多单位的数量

 粉丝数

 对象缓存存储

List(列表)

所有的list命令都是用l开头的,Redis不区分大小命令

LPUSH 将一个值或者多个值,插入到列表头部 (左)

LPUSH key value

RPUSH 将一个值或者多个值,插入到列表位部 (右)

RPUSH key value
lpop &rpop 移除list的值
lpop key  #从最左边移除一个元素
rpop key  #从最右边移除一个元素
lindex 通过下标获取list的值
lindex key index  #通过下标获取list的值
llen 获取list的长度
llen key
LREM 移除list指定的值
LREM key count element
count:移除几个
rpoplpush 移动列表元素
EXISTS 判断列表存不存在
EXISTS key
lset指定列表的下标设置值(更新值)
如果值不存在就报错
lset key index element
往list指定的元素前面或后面插入值
LINSERT key BEFORE|AFTER pivot element

List的使用场景

  

他实际上是一个链表,before Node after , left,
right 都可以插入值 如果key 不存在,创建新的链表
如果key存在,新增内容

Set(集合)

set中的值是不能重读的!

添加set集合的值

sadd key member [member ...]

获取set集合的值

SMEMBERS key

获取set集合元素个数

SCARD key

移除set的元素

SREM key member [member ...]

随机获取set的元素

SRANDMEMBER key [count]

count:指定获取几个元素

随机移除一个元素

spop key

将指定的set集合的元素移到另一个set集合中

smove source destination member

查看两个set集合中的不同的元素

SDIFF key [key ...]
key在前查看谁

查看两个set集合中的交集(共同好友)

SINTER key [key ...]

查看两个set集合中的并集

SUNION key [key ...]

Set的使用场景

微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!
  共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)

Hash(哈希)

Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的 key-vlaue!

添加值

hset key field value [field value ...]
hmset key field value [field value ...]

获取值

hget key field
hmget key field [field ...]

删除值

hdel key field [field ...]

获取hash的字段长度

hlen key

判断hash指定的字段是否存在

HEXISTS key field

只获得所有field

hkeys key

只获得所有value

hvals key

自增自减

HINCRBY key field increment 

自增

HINCRBY myhash user 1 

#自减

HINCRBY myhash user -1

设置值如果不存在则可以设置 如果存在则不能设置

 hsetnx key field value

Hash的使用场景:

  hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的 存储,String更加适合字符串存储!

Zset(有序集合)

在set的基础上,增加了一个值,set k1 v1 zset k1 score1 v1

添加值

zadd key [NX|XX] [CH] [INCR] score member [score member ...]

从小到大排序

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

总大到小排序

zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
ZREVRANGE key start stop [WITHSCORES]

移除zset的指定元素

zrem key member [member ...]

获取有序集合中的个数

zcard key

获取指定区间的成员数量

zcount key min max

Zset的使用场景
  案例思路:set 排序 存储班级成绩表,工资表排序!
  普通消息,1, 重要消息 2,带权重进行判断! 排行榜应用实现,取Top N 测试!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
13天前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
29 5
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
37 1
|
2月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
40 1
|
3月前
|
存储 消息中间件 缓存
深入探析Redis常见数据类型及应用场景
深入探析Redis常见数据类型及应用场景
62 2
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
4月前
|
NoSQL Java Redis
Redis5种数据类型
这篇文章介绍了Redis的五种数据类型:字符串、列表、集合、有序集合和哈希,并通过代码示例展示了如何在Spring框架中使用RedisTemplate操作这些数据类型。
Redis5种数据类型
|
4月前
|
存储 NoSQL Java
深入理解Redis数据类型Hashes原理
本文深入分析了Redis中的hashes数据类型,这是一种用于存储行记录的数据结构,允许一个key下存储多条记录。
深入理解Redis数据类型Hashes原理
|
4月前
|
存储 NoSQL 算法
深入理解Redis数据类型Zset原理
本文深入探讨了Redis中的Zset(有序集合)数据类型,它是一种可以存储排序功能的集合,其中每个元素都具有一个浮点型的score属性,用于根据score进行排序。
深入理解Redis数据类型Zset原理
|
4月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
4月前
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
226 0
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)