Redis基础操作 String List

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

String操作

我们知道redis是一个键值对类型的基于内存的数据库,这里我们知道键一般是String类型的,现在我们谈谈value为String类型有哪些操作吧

注:value为String类型最大的大小能存512M的数据

首先我们从set来谈谈这些数据都是什么意思吧

注:redis中命令不区分大小写,但是key和value区分大小写

这里的nx指的是 not  exist 不存在的时候设置键值对

xx 指的是键存在的时候设置键值对

ex指的是设置秒级别的过期时间  这里就是将expire复合到这一条命令中,效率更高

px则是毫秒级别的

exat和pxat则是设置unix的过期时间

如果此时我将一个键值对设置过期时间为40秒

而我在10秒的时候就将这个键值对的值修改

这里的过期时间就会变成-1 永不过期

我们想让修改完的键继承上一个值的过期时间,那么我们就可以在设置的时候加上一个keepttl即可

我们想让修改完的键继承上一个值的过期时间,那么我们就可以在设置的时候加上一个keepttl即可

get:设置的时候先查看一下原有值再设置.,此时会先返回原有值才设置这个键的值

-------------------------------------------------------------------------------------------------------------------------

下面介绍另一堆String有关的操作

1.mset k1 v1 k2 v2

可以批量设置键值对,减少交互IO

2.msetnx   就是加上了 not exist  

如果不存在就设置

3.mget  批量获取值

4.getrange  k1 0 3

获取k1的值并截取,类似于字符串截取

5.setrange 设置从某个值开始

eg  setrange k1 2 xxxx

修改k1的值从下标2开始设置为xxxx

6.incr  自增1 但是只能是数值才行

7. incr k1 5  k1自增5

8.decr  同样的还有自减操作

9.strlen  获取字符串长度

10.append 字符串追加

11.getset 先获取再设置

分布式锁

分布式锁和sync/lock等锁有什么区别吗???

分布式锁和sync/lock等锁有什么区别吗???


sync/lock锁只能管自个虚拟机上的线程,而分布式锁可以管多个虚拟机的线程获取资源


大概的思路是这样的

在JVM和资源之间设置一个节点,谁先获取到节点建立KV键值对,就可以获取到数据(这个键值对是会被删除的)

List操作

首先我们知道redis底层的list实现是双端队列结构,所以两头的操作效率就很高,中间的操作效率就很低,下面我们介绍一下关于list的一些操作

1.lpush/rpush

l就是left r就是right  就是从左边加入list和从右边加入list

注:从右边加入的最后的select是与插入相同顺序,从左边就是逆序

2.lrange  查看range之内的数据

常用的lrange 0 -1 就是查看所有数据

3.lpop 从左边弹出

4.lindex list1 2  访问list1的下标为2的数据

5.llen  查看长度

6.lrem list1 n v1 从左边开始删除n个v1 返回值是删除的个数

7.ltrim list1 3 5  将list1赋值为从下标3到下标5的片段

8.rpoplpush  源列表 目的列表   从源列表的右边拿放到目的列表的左边

9.lset list1 index value  按照下标设置值

10.linsert list1  before /after  在已有值的前面和后面插入值

场景:微信订阅号文章的排版

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2天前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
10天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
26 4
|
10天前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
13 2
|
13天前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
34 2
|
23天前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
23 3
|
5月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
823 1
|
4月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
4月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
5月前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
109 3