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
相关文章
|
1月前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
2月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
43 4
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
24 2
|
2月前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
39 2
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
27 3
|
3月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
40 0
java基础(13)String类
|
2月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
58 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
2月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
34 2
|
3月前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
22 1