栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Redis系列1】看完这一篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Redis系列1】看完这一篇

  • 自增1(如果value不是整数,则会报错)

incr key

  • 自增指定大小(如果value不是整数,则会报错)

incrby key 需要自增的数字

  • 设值,如果key已经存在则设置失败

setnx key value # 设置单个key

mset key1 value1 key2 value2 # 设置多个key

PS:setnx和mset是原子操作,必须所有都设置成功才会返回true,其还有参数可以设置过期时间,一般分布式锁就是基于带过期时间的这个命令来实现的。

  • 带过期时间设置key

set key value EX|PX 18 # EX表示秒,PX表示毫秒

下面这个例子就是设置了5秒后自动过期

  • 单独设置过期时间。不过一般为了保证原子性,我们都是使用上面set直接带时间的命令。

expire key

[](()应用场景

字符串类型的应用场景非常丰富,正常的热点数据都可以采用字符串类型来进行缓存,主要可以应用如下场景:

  • 1、热点数据及其对象缓存

  • 2、分布式Session共享

  • 3、分布式锁(利用setnx命令)

  • 4、Redis独立部署,可以用来作为全局唯一ID

  • 5、利用其原子性递增命令,可以作为计数器或者限流等

[](()2.Lists(列表)


Redis中的List列表内部的元素也是字符串,我们可以将指定元素添加到列表中的指定位置。列表数据类型的操作命令一般都会有小写字母l开头。

[](()常用命令

来看一些常用的操作命令:

  • 将一个或者多个value插入到列表key的头部,key不存在则创建key

lpush key value1 value2

  • 将value插入到列表key的头部,key不存在则不做任何处理

lpushx key value1 value2

  • 移除并返回key值的列表头元素

lpop key

  • 将一个或者多个value插入到列表key的尾部,key不存在则创建key

rpush key value1 value2

  • 将一个或者多个value插入到列表key的尾部,key不存在则不做任何处理

rpushx key value

  • 移除并返回key值的列表尾元素

rpop key

  • 返回key列表的长度

llen key

  • 返回key列表中下标为index的元素。头部从0开始,尾部从-1开始

lindex key index

  • 返回key列表中下标start(含)到stop(含)之间的元素

lrange key start stop

  • 将value设置到key列表中指定index位置。key不存在或者index超出范围则会报错

lset key index value

  • 截取列表中[start,end]之间的元素,并替换原列表保存

ltrim key start end

[](()3.Sets(集合)


Redis中的集合是一个String类型的无序集合,集合中元素唯一不可重复。

[](()常用命令

Set集合的操作命令一般都以s开头,下面就列举一些常用的命令:

  • 将一个或多个元素member加入到集合key当中,并返回添加成功的数目,如果元素已存在则被忽略

sadd key member1 member2

  • 判断元素member是否存在集合key中

sismember key member

  • 移除集合key中的元素,不存在的元素会被忽略

srem key member1 member2

  • 将元素member从集合source中移动到dest中,如果member不存在,则不执行任何操作

smove source dest member

  • 返回集合key中所有元素

smembers key

[](()4.Sorted Sets(有序集合)


Redis中的有序集合和集合的区别是有序集合中的每个元素都会关联一个double类型的分数,然后按照分数从小到大的顺序进行排列。

[](()常用命令

Sorted Sets集合的操作命令一般都以z开头,下面就列举一些常用的命令:

  • 将一个或多个元素member及其score添加到有序集合key中

zadd key score1 member1 score2 member2

  • 返回有序集合key中member成员的score

zscore key member

  • 将有序集合key中的member加上num ,num可以为负数

zincrby key num member

  • 返回有序集合key中score值在min(含)到max(含)之间的member数量

zcount key min max

  • 返回有序集合key中score从小到大排列后start(含)到end(含)之间的所有member

zrange key start stop

  • 返回有序集合key中score从大到小排列后start(含)到end(含)之间的所有member

zrevrange key start stop

  • 返回有序集合中score从min到max的所有元素,按score从小到大排列。注意这里默认是闭区间,但是可以在max和min前面加上(或者[来控制开闭区间

zrangebyscore key min max

  • 返回有序集合中score从max到min的所有元素,按score从大到小排列。注意这里默认是闭区间,但是可以在min和max前面加上(或者[来控制开闭区间

zrevrangebyscore key max min

  • 返回有序集合中member中元素排名(从小到大),返回的结果从0开始计算

zrank key member

  • 返回有序集合中member中元素排名(从大到小),返回的结果从0开始计算

zrevrank key member

  • 返回有序集合中min和max之间的member数量。注意这个命令中的min和max前面必须加(或者[来控制开闭区间,特殊值-和+分别表示负无穷和正无穷

zlexcount key min max

[](()5.Hashes(哈希)


哈希表中存储的是一个key和value的映射表。操作哈希数据类型的命令一般都是h开头。

[](()常用命令

下面就是一些常用命令的示例:

  • 将哈希表key中域field的值设置为value

hset key field value #设置单个field

hmset key field1 value1 field2 value2 #设置多个field

  • 将哈希表key中域field的值设置为value,如果field已存在,则不执行任何操作

hsetnx key field value

  • 获取哈希表key中的域field对应的value

hget key field

  • 获取哈希表key中的多个域field对应的value

hmget key field1 field2

  • 删除哈希表key中的一个或者多个field

hdel key field1 field2

  • 返回哈希表key中域的数量

hlen key

  • 为哈希表key中的域field的值加上增量increment,increment可以为负数,如果field不是数字则会报错

hincrby key field increment

  • 为哈希表 Java开源项目【ali1024.coding.net/public/P7/Java/git】 key中的域field的值加上增量increment,increment可以为负数,如果field不是float类型则会报错

hincrbyfloat key field increment

  • 为哈希表key中的域field的值加上增量increment,increment可以为负数,如果field不是数字则会报错

hincrby key field increment

  • 获取哈希表key中的所有域

hkeys key

  • 获取哈希表中所有域的值

hvals key

[](()应用场景

哈希类型和字符串类型其实非常像,所以基本上字符串能做的事情,哈希都能做,而且在有些场景下利用哈希的分类存储,将会更加高效。

[](()6.Bit arrays (or simply bitmaps)位图

------------------------------------------------------ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 -----------------------------------------

位图bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态,其值只能是0或者1,表示是或者否。所以这个一般用于统计是否登录,是否收藏等非否即是的数据。

Java核心架构进阶知识点

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的

内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补
,所以基本上字符串能做的事情,哈希都能做,而且在有些场景下利用哈希的分类存储,将会更加高效。

[](()6.Bit arrays (or simply bitmaps)位图

------------------------------------------------------ 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 -----------------------------------------

位图bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态,其值只能是0或者1,表示是或者否。所以这个一般用于统计是否登录,是否收藏等非否即是的数据。

Java核心架构进阶知识点

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的

[外链图片转存中…(img-FIjtqGhO-1650522541238)]

[外链图片转存中…(img-SBv7fjpX-1650522541239)]

[外链图片转存中…(img-vxa0feW6-1650522541240)]

内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号