redis五大数据类型及其常用命令(详细)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: redis五大数据类型及其常用命令(详细)

redis五大数据类型

String(字符串)

# 设置值
set test test1
# 获取值
get test
# 查看所有值
keys * 
# 判断值是否存在
EXISTS test
# 追加值,如果没有相当于set
APPEND test ',ceshichenggong'
# 查看key的长度
strlen test
# 数字类型增加1
INCR view 
# 数字类型减少1
DECR view
# 指定增量为5
INCRBY view 5
# 指定减量为3
DECRBY view 3  
# 截取字符串[1,4]
GETRANGE key 1 4
# 获取全部的字符串,相当于get
GETRANGE key 0 -1
##############################################
#  setex (set with  expire)  #设置过期时间
#  setnx (set if not exist)  #不存在再设置(在分布式锁中会常常使用!)
# 设置key1 的值为hello,30秒后过期
setex key1 30 'hello'   
# 查看还有多久过期
ttl key1
# 如果mykey不存在,创建mykey
setnx mykey redis 
#如果mykey存在,创建失败!
setnx mykey 'nihao'  
#############################################
#对象
# 设置一个user:1对象 值为json字符串来保存一个对象
set user:1 {name:zhangsan,age:3}  
# 获取对象值
get user:1
"{name:zhangsan,age:3}"
# 这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK
mset user:1:name zhangsan user:1:age 2
mget user:1:name user:1:age

LIst

基本的数据类型,列表;在redis里面,我们可以把list玩成栈,队列,阻塞队列,所有的List命令都是用L开头的

# 左边插入
LPUSH list one     
# 获取
LRANGE list 0 -1
# 右边插入
RPUSH list four
# 获取
LRANGE list 0 -1
###################################
# 移除列表的右边第一个 
RPOP list
# 移除列表的左边第一个
#################################
# 查询值
Lindex list 1 
# 移除值
lrem list 1 one

小结

  • 他实际上是一个链表,before Node after , left,right都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有值,空链表,也代表不存在!
  • 在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~

set

set中的值是不能重复的!

# set集合中添加值
sadd myset hello          
# 查看指定set的所有值
smembers myset  
# 判断某一个值是不是在set集合中!
SISMEMBER myset hello 
#移除set集合中的指定元素
srem myset hello
# 查看集合中还有几个元素
scard myset
# 随机抽选一个元素
srandmember myset 
# 随机抽选出指定个数的元素
srandmember myset 2
########################################################
# 随机删除一些set集合中的元素!
spop myset  
# 将一个指定的值,移动到另外的一个set集合中!
smove myset myset2 "nihao"
数字集合类:
- 交集 SINTER
- 并集 SUNION
- 差集 SDIFF

Hash(哈希)

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

hset myhash field1 xiaobo       # set一个具体  key-value
hget myhash field1 xiaobo       # 获取一个字段值
hmget myhash field1 field2      # 获取多个字段值
hgetall myhash                  # 获取全部的数据
hdel myhash field1              # 删除hash指定key字段!对应的value值也就消失了!
hgetall myhash
hlen myhash                     # 获取hash表的字段数量!
#######################################################
#只获得所有field
#只获得所有value
hkeys myhash       #只获得所有field
hvals myhash       #只获得所有value

Zset(有序集合)

zadd myset 1 0ne    #添加一个值
zadd myset 2 two 3 three    #添加多个值
zadd salary 2500 zhangsan   #添加三个值
zadd salary 5000 lisi
zadd salary 500 wangwu
zrangebyscore salary -inf +inf   #从小到大排序
zrevrang salary 0 -1   #从大到小进行排序
zrangebyscore salary -inf +inf withscores   #显示全部的用户并且附带成绩
zrangebyscore salary -inf 2500 withscores  #显示工资小于2500员工的升降排序
######################################################################
#移除rem中的元素
zrem salary xiaobo   #移除有序集合中的指定元素
zcard salary  #获取有序集合中的个数
zcount myset 1 3    #获取指定区间的成员数量!
相关实践学习
基于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
相关文章
|
19小时前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
|
1天前
|
NoSQL 应用服务中间件 API
Redis是如何建立连接和处理命令的
本文主要讲述 Redis 是如何监听客户端发出的set、get等命令的。
|
16天前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
31 5
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
38 1
|
2月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
67 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
2月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
42 1
|
1月前
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
55 0
|
2月前
|
缓存 NoSQL 测试技术
Redis如何解决频繁的命令往返造成的性能瓶颈!
Redis如何解决频繁的命令往返造成的性能瓶颈!
|
2月前
|
缓存 NoSQL Redis
Redis命令:列表模糊删除详解
Redis命令:列表模糊删除详解
84 3
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
369 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
下一篇
DataWorks