Redis的数据类型详解

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis的数据类型详解

1. Redis 键(key)


序号  命令及描述
1 DEL key该命令用于在 key 存在时删除 key。
2 DUMP key序列化给定 key ,并返回被序列化的值。
3 EXISTS key检查给定 key 是否存在。
4 EXPIRE key seconds为给定 key 设置过期时间,以秒计。
5 PEXPIRE key milliseconds设置 key 的过期时间以毫秒计。
6 KEYS pattern查找所有符合给定模式( pattern)的 key 。
7 MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中。
8 PERSIST key移除 key 的过期时间,key 将持久保持。
9 PTTL key以毫秒为单位返回 key 的剩余的过期时间。
10  TTL key以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
13  RANDOMKEY从当前数据库中随机返回一个 key 。
11  RENAME key newkey修改 key 的名称
12  RENAMENX key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。
13  SCAN cursor [MATCH pattern] [COUNT count]迭代数据库中的数据库键。
14  TYPE key返回 key 所储存的值的类型。
#判断是否存在
exists name
#超时过期,单位是秒
expire name 10
#查看过期时间
ttl name
#移除当前的key
move name 1
#查看当前key的类型
type name



2 String


#追加字符串,没有的话就新建
append name "jeames"
#字符串长度
strlen name
#i++
set count 0
incr count
#i--
decr count
#指定增量 count = count + 10
incrby count 10
#指定减量 count = count - 10
decrby count 10
#截取字符串 wangqin
getrange key 0 3
"wang"
#替换
setrange key 1 qq
"wqqgqin"
#设置过期时间
setex key 30 "hello"
#不存在再设置,往往在分布式中使用,如果key1不存在就创建,存在就创建失败
setnx key1 "redis"
#批量设置
mset k1 v1 k2 v2 k3 v3
#批量获取
mget k1 k2
#要么一起成功,要么一起失败,保持原子性
msetnx k1 v1 k2 v2
#先获取在写入,不存在值为nil,存在的话获取原来的值在设置新的值
getset


3.List


#将一个值或者多个值插入list的头部
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
#查看list,头->尾
127.0.0.1:6379> lrange list 0 -1
2.3 Set
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379> rpush list right
(integer) 4
#将一个值或者多个值插入list的尾部
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
#移除list第一个元素
127.0.0.1:6379> lpop list
"three"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "right"
#移除list最后一个元素
127.0.0.1:6379> rpop list
"right"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
#根据下标获取值
127.0.0.1:6379> lindex list 0
#获取list长度
127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "two"
4) "one"
#从上至下删除一个 two
127.0.0.1:6379> lrem list 1 two
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379>


4.Set


#添加Set元素
127.0.0.1:6379> sadd myset v1 v2 v3 v4
(integer) 4
#显示所有myset集合中的元素
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v4"
4) "v2"
#查询v1是否存在myset集合中,存在就返回1,不存在就返回0
127.0.0.1:6379> sismember myset v1
(integer) 1
127.0.0.1:6379> sismember myset v6
(integer) 0
127.0.0.1:6379> sadd uset k1 k2 k3 v1
(integer) 4
#合并集合myset和uset到集合set中,set重复的取一个就行
127.0.0.1:6379> sunionstore set myset uset
(integer) 7
#合并显示集合myset和uset
127.0.0.1:6379> sunion myset uset
1) "v1"
2) "v3"
3) "k1"
4) "k3"
5) "v4"
6) "k2"
7) "v2"
#set集合的长度
127.0.0.1:6379> scard set
(integer) 6
#随机删除set中的元素
127.0.0.1:6379> spop set
"v4"
#移动指定的一个值到其他的集合中set->myset
127.0.0.1:6379> smove set myset k1
#两个集合的差集
127.0.0.1:6379> smembers set
1) "v3"
2) "k3"
3) "k2"
4) "v2"
127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v4"
4) "v2"
5) "k1"
127.0.0.1:6379> sdiff myset set
1) "v1"
2) "k1"
3) "v4"
#两个集合的交集
127.0.0.1:6379> sinter myset set
1) "v3"
2) "v2"
#两个集合的并集
127.0.0.1:6379> sunion myset set
1) "v1"
2) "v3"
3) "k1"
4) "k3"
5) "v4"
6) "k2"
7) "v2"



5.Hash(哈希)


#set一个具体的 key-value
127.0.0.1:6379> hset myhash name jeames
(integer) 1
#获取一个字段值
127.0.0.1:6379> hget myhash name
"wangqin"
#set一组 key-value
127.0.0.1:6379> hmset myhash name wangqin1 age 18
OK
#获取一组 key-value
127.0.0.1:6379> hmget myhash name age
1) "wangqin1"
2) "18"
#获取全部数据
127.0.0.1:6379> hgetall myhash
1) "name"
2) "wangqin1"
3) "age"
4) "18"
#删除指定的key
127.0.0.1:6379> hdel myhash name
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "age"
2) "18"
127.0.0.1:6379> hmset myhash name wangqin set male
OK
#获取hash表的字段数量
127.0.0.1:6379> hlen myhash
(integer) 3
#hash表中是否存在key
127.0.0.1:6379> hexists myhash name
(integer) 1
127.0.0.1:6379> hexists myhash name1
(integer) 0
#获取hash表的key
127.0.0.1:6379> hkeys myhash
1) "age"
2) "name"
3) "set"
#获取hash表的值
127.0.0.1:6379> hvals myhash
1) "18"
2) "wangqin"
3) "male"


6.Zset(有序集合)


#添加zset元素
127.0.0.1:6379> zadd zset 1 one
(integer) 1
#批量添加zset元素
127.0.0.1:6379> zadd zset 2 two 3 three
(integer) 2
#获取zset中所有元素
2.6 geospatital(地理位置)
127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
3) "three"
#倒序查询
127.0.0.1:6379> zrevrange zset 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zadd zset -1 -one
(integer) 1
127.0.0.1:6379> zadd zset -2 -two
(integer) 1
#正序排序,从-∞到+∞
127.0.0.1:6379> zrangebyscore zset -inf +inf
1) "-two"
2) "-one"
3) "one"
4) "two"
5) "three"
127.0.0.1:6379> zrangebyscore zset -1 +inf
1) "-one"
2) "one"
3) "two"
4) "three"
#倒序排序,从+∞到-∞
127.0.0.1:6379> zrevrangebyscore zset +inf -1
1) "three"
2) "two"
3) "one"
4) "-one"
127.0.0.1:6379> zrem zset one
(integer) 1
127.0.0.1:6379> zrange zset 0 -1
1) "-two"
2) "-one"
3) "two"
4) "three"
#集合的长度
127.0.0.1:6379> zcard zset
(integer) 4


目录
相关文章
|
3月前
|
存储 NoSQL 定位技术
Redis数据类型面试给分情况
Redis常见数据类型包括:string、hash、list、set、zset(有序集合)。此外还包含高级结构如bitmap、hyperloglog、geo。不同场景可选用合适类型,如库存用string,对象存hash,列表用list,去重场景用set,排行用zset,签到用bitmap,统计访问量用hyperloglog,地理位置用geo。
107 5
|
3月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
456 2
|
10月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
400 85
|
7月前
|
NoSQL Redis
Redis的常用数据类型有哪些 ?
Redis 有 5 种基础数据结构,它们分别是:string(字符串)、list(列表)、hash(字典)、set(集 合) 和 zset(有序集合)
|
10月前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
174 5
|
11月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
221 1
|
12月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
139 1
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
存储 消息中间件 缓存
深入探析Redis常见数据类型及应用场景
深入探析Redis常见数据类型及应用场景
413 2
|
NoSQL Java Redis
Redis5种数据类型
这篇文章介绍了Redis的五种数据类型:字符串、列表、集合、有序集合和哈希,并通过代码示例展示了如何在Spring框架中使用RedisTemplate操作这些数据类型。
Redis5种数据类型