Redis基础操作 String List

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 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
相关文章
|
9天前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
8 0
|
2天前
|
存储 NoSQL Redis
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
|
1月前
|
存储 NoSQL 安全
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
|
11天前
|
Java API
将`List<String>`转换为`List<Long>`
将`List<String>`转换为`List<Long>`
|
1月前
|
存储 NoSQL Redis
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
Redis第四弹,Redis实现list时候做出的优化ziplist(压缩链表,元素少的情况),可更好的节省空间list——(内部编码:quicklist)Object encoding
|
1月前
|
NoSQL Java Redis
【Redis】 Java操作Redis客户端命令——基础操作与字符串操作
【Redis】 Java操作Redis客户端命令——基础操作与字符串操作
|
1月前
|
存储 缓存 负载均衡
【Redis】 String类型的内部编码与使用环境
【Redis】 String类型的内部编码与使用环境
|
12天前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
13 1
|
12天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
6天前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法