Java随笔 | Redis简介、存储结构、常见数据类型的操作命令

文章目录

  • 一、Redis简介
  • 二、Redis的Key-Value存储结构
  • 三、常见数据类型及命令
    • 2.1 key命令
    • 2.2 String类型命令
    • 2.3 Hash类型命令
    • 2.4 Set类型命令
    • 2.5 Sorted Set类型命令
    • 2.6 List类型命令


一、Redis简介

Redis是一种非关系型数据库(NoSql),其中所有的数据都以键值对的形式存储在内存中,与传统的关系型数据库(例如Mysql)相比,其最大的优势是性能十分优越,可以支持每秒十几万次的读/写操作,并且还支持集群、分布式、主从同步等配置,常用于高并发请求场景。此外它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。
Redis在 Java Web主要的两大应用场景:存储缓存用的数据、需要高速读/写的场合。

官网介绍
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

  • Redis官网:https://redis.io/
  • Redis中文网:https://www.redis.net.cn/

二、Redis的Key-Value存储结构

Redis使用的是K-V(键值对)结构存储数据,其中Key是字符串类型,Value可以是多种类型,常见的有String、Hash、List、Set等。
Java随笔 | Redis简介、存储结构、常见数据类型的操作命令_第1张图片
为便于理解,可以将Key想象成现实生活中的“标签”,而Value则可以是多种类型,例如一张试卷(String)、一个盒子(Set)、一批门锁(Hash),写着“装有气球的盒子”的标签则贴在(指向)对应的实物盒,我们可以通过标签纸找到对应的盒子(Set),从中根据需要取出气球(Set中的元素)。

三、常见数据类型及命令

  • 本部分介绍常用的类型及命令,大全可参考:https://www.redis.net.cn/order/ 或 https://redis.io/commands/

2.1 key命令

key命令是直接操作key的命令,因为一个key指向一个value,所以可以通过操作key对整个键值对进行修改。

命令 释义 语法
TYPE 返回key所储存的值的类型 TYPE key_name
EXPIRE 设置key的过期时间 EXPIRE key_name seconds
PERSIST 移除给定key的过期时间,使得 key 永不过期 PERSIST key_name
TTL 以秒为单位返回key的剩余过期时间
返回-2表示key不存在,返回-1表示key存在但没有设置过期时间
TTL key_name
DEL 删除已存在的键,不存在的key会被忽略,返回被删除key的数量 DEL key_name
RENAME 修改key的名称 RENAME old_name new_name
EXISTS 判断指定的key是否存在,存在返回1,不存则返回0 EXISTS key_name

2.2 String类型命令

命令 释义 语法
SET 新增或覆写一个键值对 SET key value
MSET 同时设置多个键值对 MSET k1 v1 k2 v2 ...
GET 获取指定key的值 GET key_name
MGET 获取一个或多个给定 key 的值 MGET k1 k2 ...
STRLEN 获取指定 key 所储存的字符串值的长度 STRLEN key_name
INCR 将 key 中储存的数字值增1 INCR key_name
DECR 将 key 中储存的数字值减1 DECR key_name
INCRBY 将 key 中储存的数字加上指定的值 INCRBY key_name num
DECRBY 将 key 中储存的数字减去指定的值 DECRBY key_name num
APPEND 为指定的 key 追加值(字符串拼接) APPEND key_name append_str
GETRANGE 获取key存储的字符串的子串(参数包括头尾) GETRANGE key_name start end
eg. GETRANGE address 3 -1
SETNX 仅当指定的 key 不存在时为 key 设置值
设置成功返回1,设置失败返回0
SETNX key value

2.3 Hash类型命令

Redis hash类型是field和value的映射表,特别适合用于存储对象。
Java随笔 | Redis简介、存储结构、常见数据类型的操作命令_第2张图片

命令 释义 语法
HSET 为哈希表中的字段赋值(一个或多个) HSET key field value [field value ...]
HGET 返回哈希表中指定字段的值 HGET key field
HMGET 返回哈希表中一个或多个给定字段的值 HMGET key field [field ...]
HGETALL 返回哈希表中所有的字段(filed)和值(value) HGETALL key
HKEYS 获取哈希表中的所有字段名(filed) HKEYS key
HVALS 返回哈希表所有字段的值(value) HVALS key
HINCRBY 为哈希表中的字段值加上指定增量值 HINCRBY key field num
HDEL 删除哈希表中的一个或多个指定字段 HDEL key field [field ...]

2.4 Set类型命令

Redis的Set是无序集合。集合成员是唯一的,不能出现重复的数据。

命令 释义 语法
SADD 将一个或多个成员元素加入到集合中 SADD key member [member ...]
SREM 移除集合中的一个或多个成员元素 SREM key member [member ...]
SPOP 从集合中随机弹出n个元素(默认为1个) SPOP key [count]
SMEMBERS 返回集合中的所有的成员 SMEMBERS key
SISMEMBER 判断成员元素是否是集合的成员(返回 0 or 1 ) SISMEMBER key member
SCARD 返回集合中元素的数量(去重统计) SCARD key
SINTER 返回所有给定集合的交集 SINTER key [key ...]
SDIFF 回给定两个集合之间的差集 SDIFF key1 key2
SUNION 返回所有给定集合的并集 SUNION key [key ...]
SRANDMEMBER 随机返回n个成员(默认为1) SRANDMEMBER key [count]

2.5 Sorted Set类型命令

Redis 有序集合和集合一样不允许有重复的成员。不同的是每个元素都会关联一个double类型的分数(分数可以重复)。Redis通过分数来为集合中的成员进行排序。

命令 释义 语法
ZADD 将一个或多个成员(带分数)加入到有序集合中 ZADD key score member [score member ...]
ZREM 移除集合中的一个或多个成员元素 ZREM key member [member ...]
ZPOPMAX 弹出分值最大的成员 ZPOPMAX key [count]
ZPOPMIN 弹出分值最小的成员 ZPOPMIN key [count]
ZRANGE 按分数返回指定区间内的成员(包含头尾,默认从小到大) ZRANGE key start stop [REV]
ZRANK 返回指定成员的排名(从小到大排) ZRANK key member
ZREVRANK 返回指定成员的排名(从大到小排) ZREVRANK key member

2.6 List类型命令

Redis列表对应数据结构中的队列,按照插入顺序排序,可以添加一个元素导列表的左侧或者右侧。

命令 释义 语法
LPUSH 将一个或多个值插入到列表左侧 LPUSH key element [element ...]
RPUSH 将一个或多个值插入到列表右侧 RPUSH key element [element ...]
LPOP 弹出列表左侧的第一个元素 LPOP key
RPOP 弹出列表右侧的第一个元素 RPOP key
LRANGE 返回列表中指定区间内的元素(包括头尾) LRANGE key start stop
LINSERT 在列表的某元素前或后插入一个元素 LINSERT key pivot element
eg. LINSERT print BEFORE world hello
LSET 替换(覆写)索引位置的元素 LSET key index element
LLEN 返回列表的长度 LLEN key

你可能感兴趣的:(Java随笔,redis,java)