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


一、Redis简介

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

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

二、Redis的Key-Value存储结构

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

三、常见数据类型及命令

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,不存则返回0EXISTS 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 中储存的数字值增1INCR key_name
DECR将 key 中储存的数字值减1DECR 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的映射表,特别适合用于存储对象。
在这里插入图片描述

命令释义语法
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 <BEFORE | AFTER> pivot element
eg. LINSERT print BEFORE world hello
LSET替换(覆写)索引位置的元素LSET key index element
LLEN返回列表的长度LLEN key
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿林仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值