Redis 五种数据类型

Redis数据库因其丰富的数据类型而独具优势,包括String、List、Hash、Set和Sorted Set。String适合存储基本数据和计数;List适用于消息队列和分页;Hash用于存储结构化对象;Set实现无序集合的唯一性;Sorted Set则提供有序集合,常用于排行榜。各种数据类型都有相应的操作命令,如String的GET/SET,List的LPUSH/RPOP,Hash的HSET/HGET,Set的SADD/SREM,以及Sorted Set的ZADD/ZRANGE。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Redis 数据库相比于其他非关数据库优势的地方主要在于数据类型丰富,支持 key-value、hashes、strings sets(有序、无序)、list 等数据类型

mark

一、String 数据类型

String 是 redis 最基本的类型,最大能存储 512MB 的数据
String 类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

1. SET/GET/APPEND/STRLEN

redis 127.0.0.1:6379> exists mykey
#判断该键是否存在,存在返回1,否则返回0。
(integer) 0		
redis 127.0.0.1:6379> append mykey "hello"
#该键并不存在,因此append命令返回当前Value的长度。
(integer) 5		
redis 127.0.0.1:6379> append mykey " world"
#该键已经存在,因此返回追加后Value的长度。
(integer) 11
redis 127.0.0.1:6379> get mykey
#通过get命令获取该键,以判断append的结果。
"hello world"
redis 127.0.0.1:6379> set mykey "this is a test"
#通过set命令为键设置新值,并覆盖原有值。
OK
redis 127.0.0.1:6379> get mykey
"this is a test"
redis 127.0.0.1:6379> strlen mykey
#获取指定Key的字符长度。
(integer) 14

2. INCR/DECR/INCRBY/DECRBY

redis 127.0.0.1:6379> set mykey 20
#设置Key的值为20
OK
redis 127.0.0.1:6379> incr mykey
#该Key的值递增1
(integer) 21
redis 127.0.0.1:6379> decr mykey
#该Key的值递减1
(integer) 20
redis 127.0.0.1:6379> del mykey
#删除已有键。
(integer) 1
redis 127.0.0.1:6379> decr mykey
#对空值执行递减操作,其原值被设定为0,递减后的值为-1
(integer) -1
redis 127.0.0.1:6379> del mykey   
(integer) 1
redis 127.0.0.1:6379> incr mykey
#对空值执行递增操作,其原值被设定为0,递增后的值为1
(integer) 1
redis 127.0.0.1:6379> set mykey hello
#将该键的Value设置为不能转换为整型的普通字符串。
OK
redis 127.0.0.1:6379> incr mykey
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> set mykey 10
OK
redis 127.0.0.1:6379> decrby mykey 5
#减少指定的整数
(integer) 5
redis 127.0.0.1:6379> incrby mykey 10
#增加指定的整数
(integer) 15

3. GETSET

redis 127.0.0.1:6379> incr mycounter
#将计数器的值原子性的递增1
(integer) 1
redis 127.0.0.1:6379> getset mycounter 0
#在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成。
"1"
redis 127.0.0.1:6379> get mycounter
#查看设置后的结果。
"0"

4. SETEX

redis 127.0.0.1:6379> setex mykey 15 "hello"
#设置指定Key的过期时间为10秒。
OK    
redis 127.0.0.1:6379> ttl mykey
#通过ttl命令查看一下指定Key的剩余存活时间(秒数),-2表示已经过期,-1表示永不过期。
(integer) 4
redis 127.0.0.1:6379> get mykey
#在该键的存活期内我们仍然可以获取到它的Value。
"hello"
redis 127.0.0.1:6379> ttl mykey
#该ttl命令的返回值显示,该Key已经过期。
(integer) -2
redis 127.0.0.1:6379> get mykey
#获取已过期的Key将返回nil。
(nil)

5. SETNX

redis 127.0.0.1:6379> del mykey
#删除该键,以便于下面的测试验证。
(integer) 1
redis 127.0.0.1:6379> setnx mykey "hello"
#该键并不存在,因此setnx命令执行成功。
(integer) 1
redis 127.0.0.1:6379> setnx mykey "world"
#该键已经存在,因此本次设置没有产生任何效果。
(integer) 0
redis 127.0.0.1:6379> get mykey
#从结果可以看出,返回的值仍为第一次设置的值。
"hello"

6. MSET/MGET/MSETNX

redis 127.0.0.1:6379> mset key1 "hello" key2 "world"
#批量设置了key1和key2两个键。
OK
redis 127.0.0.1:6379> mget key1 key2
#批量获取了key1和key2两个键的值。
1) "hello"
2) "world"
redis 127.0.0.1:6379> msetnx key3 "zhang" key4 "san"
#批量设置了key3和key4两个键,因为之前他们并不存在,所以msetnx命令执行成功并返回1。
(integer) 1
redis 127.0.0.1:6379> mget key3 key4
1) "zhang"
2) "san"
redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world"
#批量设置了key3和key5两个键,但是key3已经存在,所以msetnx命令执行失败并返回0。
(integer) 0
redis 127.0.0.1:6379> mget key3 key5
#批量获取key3和key5,由于key5没有设置成功,所以返回nil。
1) "zhang"
2) (nil)

二、List 数据类型

列表的元素类型为 string,按照插入顺序排序,在列表的头部或尾部添加元素

1. LPUSH/LPUSHX/LRANGE

redis 127.0.0.1:637
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值