Redis学习记录

 

Redis简介­­­

Redis是一个高性能的key-value非关系型数据库,可以存键(key)与5中不同类型的值(value)之间的映射(mapping)。

支持存储的value类型包括:String(字符串)、list(链表)、set(集合)、zset(有序集合)、哈市(散列表)

Spring数据类型

赋值命令

命令原型:SET key value

描述:设定该key持有特定的字符串value,如果该key已经存在,就覆盖它。

返回值:总是返回“OK”。

取值命令

GET key

获取指定key的value,如果该key关联的value不是String类型,就返回报错信息,get命令只能用于获取String value。

返回值:与key相关的value,如果key不存在,返回nil。

GETSET

GETSET key value

原子性的设置该key为指定的value,同时返回该key的原有值。也只能返回String类型,否则报错。

如果不存在,返回nil。

递增数字

INCR key

将指定key的value原子性的递增1。如果key不存在,其初始值为0。如果value的值不能转换为整数型,则返回相应错误信息。该操作取值范围为64位有符号整数。

返回值:递增后的value。

递减数字

DECR key

将指定key的value原子性的递减1。如果key不存在,初始值为0,递减后为-1。其他和递增数字一样。

增加指定的整数

INCRBY key increment

将指定key的值增加increment,其他和增1一样。

减少指定整数

DECRBY key decrement

将指定key的值减少decrement

SETEX key seconds value

原子性完成两个操作,一是设置该key的值为指定字符串,同时设置该key在Redis服务器中的存活时间(秒数)。主要应用于Redis被当做Cache服务器时使用。

SETNX

SETNX key value

如果指定的key不存在,则设定该key持有指定字符串value。如果key已经存在,则该命令不做任何操作。

返回值:1表示设置成功,否则0

向尾部追加值

ADDPEND key value

如果key存在,将参数value追加到已存在value的末尾。如果不存在,会创建一个新的key/value

返回值:追加后value的长度。

获取字符串长度

STRLEN key value

返回指定key的字符值长度,如果value不是String类型,redis将执行失败并返回相关错误信息。

返回值:返回指定key的value字符长度,如果该key不存在,返回0

设置多个键值

MSET key value [key value …]

该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行set命令

返回值:始终返回OK

获取多个键值

MGET key [key …]

返回所有指定keys的values,如果其中一个key不存在,该key的value返回nil。

返回值:返回一组指定keys的values的列表

MSETNX命令

MSETNX key value [key value …]

完成参数中所有key/value的设置操作,可以看做是多次迭代SETNX命令。注意:如果这一批keys中有任意一个key已经存在,那么该操作全部回滚,所有修改将不会生效。

返回值:1表示所有keys都设置成功,0表示没有任何key被修改。

List数据类型

List类型是按照插入排序的字符串链表,可以在其头部和尾部添加元素。插入时若该键不存在,则创建新的链表。若该键中所有元素被移除,那么它也会从数据库中删除。

当我们在链表两端插入或删除元素,会非常高效。若在链表中间操作,将会非常低效。

向列表左端添加元素

LPUSH key value[value …]

在指定key所关联的List value的头部插入参数中给出的所有values。如果该key不存在, 该命令将在插入之前创建一个与key关联的空链表,之后再将数据从链表的头部插入。如果改键value不是链表类型,返回错误信息。

返回值:插入后的链表元素的数量

向列表右边添加元素

RPUSH key value[value…]

和向左端添加元素一样,只是从尾部插入

LPUSHX命令

LPUSHX key value

紧有当前参数指定的key时,才会从头部插入value,否则不会有任何操作

返回值:插入后元素数量。

RPUSHX命令

RPUSHX key value

和LPUSHX相反,有key时从尾部插入value。

从列表左边弹出元素

LPOP key

返回并弹出与之关联的链表的头部第一个元素。若该key不存在,返回nil。

返回值:链表头部的元素

从列表右侧弹出元素

RPOP key

返回并弹出尾部第一个元素。和LPOP方向相反。

获取列表中元素个数

LLEN key

返回与key关联链表元素的数量。如果key不存在,返回0。如果value不是链表,返回错误信息。

返回值:链表中元素的数量

获得列表片段

LRANGE key start stop

Start和stop的值都可以取负值,-1将表示最后一个元素,即尾部元素,-2表示倒数第二个元素以此类推。该命令在获取元素是,start和end位置上的值都会被取出。如果start的值大于链表中元素的数量,空链表将会被取出。如果end的值大于元素的数量,那获取的是从start位置开始,链表中剩余的所有元素

返回值:返回指定范围内元素的列表。

删除列表中指定的值

LREM key count value

在指定key关联的链表中,删除前count个值等于value的元素。

如果count大于0,从头到尾遍历并删除。如果小于0,从尾到头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果k也不存在,直接返回0。

返回值:返回被删除的元素数量。

设置指定索引的元素值

 LSET key index value

设定链表中指定位置的值为新值。其中0表示第一个元素,即头部元素,-1表示尾部元素。如果index超过元素的数量范围,返回相关错误信息。

获取指定索引的元素值

LINDEX key index

返回链表中指定位置的元素。

Index是0,表示头部元素,是-1,表示尾部元素。若关联的不是链表,返回相关错误信息。

返回值:返回请求的元素,如果index超出范围,则返回nil。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jvm系列(十):教你如何成为Java的OOM Killer

转载自 jvm系列(十):教你如何成为Java的OOM Killer前言 虽然事隔半年,当时排查线上OOM事故的过程记忆犹新,每一个步骤都历历在目,感谢业务组、系统部、压测组、监控与应急部对架构组的强力支持,得以让这个Java内存问题水落石出&am…

java 程序的初始化顺序是怎样的?

【0】README 1)本文 转自“ java 程序员面试笔试宝典”, 这个书有点意思; 【1】java程序初始化遵循三个原则(rule) r1)静态变量 优先于 非静态变量; r2)父类优先于子类进行初始化&a…

操作符

直接常量 double: 111d,111D 二进制:前缀为0b 十六进制:前缀为0x或0X,后面最大9位。 八进制:前缀为0,后面最大7位。 按位操作符 与(&): 或(||)&#x…

jvm系列(十一):Java 8-从持久代到metaspace

转载自 jvm系列(十一):Java 8-从持久代到metaspaceJava 8介绍了一些新语言以及运行时新特点。其中一个特点便是完全移除了持久代(PermGen),自从Oracle公司发布了JDK1.7后就已经宣布了这个决定。还有比如内部字符串,从JDK1.7开始就从持久代移除了&#xf…

我的控制反转,依赖注入和面向切面编程的理解

感谢http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/ 的供图1.什么是控制? 如下图所示,我们看到了 软件系统中 对象的 高耦合现象。全体齿轮的转动由一个对象来控制,如类B。2.什么是 控制反转? 是用来对对象进行解耦。借助第…

在Spring Boot中使用切面统一处理自定义的异常

最近我们将项目的一个单独模块提取了一个微服务,这个微服务主要负责其他系统的接入。目的是发布主项目的时候不会影响到其他系统接入。在提取出的微服务中,需要定义一个正常返回的报文和异常返回的报文。正常返回报文就是正常业务返回的数据报文&#xf…

Java 8的新特性—终极版

转载自 Java 8的新特性—终极版 1. 简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和JVM等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在…

ReviewForJob——java虚拟机的垃圾回收策略(个人总结)

理解jvm的垃圾回收策略,需要解决以下3个问题问题1:哪些内存需要回收?问题2:什么时候进行回收?问题3:怎样来回收?【解决问题1】哪些内存需要回收?jvm的内存区域有5大块:1&…

使用静态代理模式实现公用的报表导出功能

先聊一下什么是代理模式? 代理模式 给某个对象提供一个代理对象,并由代理独享控制对原对象的引用。什么意思呢?代理模式就有点像我们生活中常见的中介。 举个例子,我想买辆二手车,第一种方式是自己去找车源&#xff…

java前台线程(普通线程) 和 后台线程

【1】普通线程: 就是指 用户 创建的一般线程,具有个体性,不具有提供公共服务的性质,因此, 通常需要我们在 线程的 循环语句中 手动编写 循环结束语句,也即 线程运行终止的条件语句; 【2】后台线…

mysql中使用CASE WHEN

简单的使用CASE WHEN CASE SCORE WHEN A THEN 优 ELSE 不及格 END CASE SCORE WHEN B THEN 良 ELSE 不及格 END CASE SCORE WHEN C THEN 中 ELSE 不及格 END上面的sql等同于 CASE SCORE WHEN A THEN 优 WHEN B THEN 良 WHEN C THEN 中 ELSE 不及格 ENDTHEN后面的值与ELSE后面…

Java生成随机数的几种高级用法

转载自 进阶 | Java生成随机数的几种高级用法!言归正传,众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的…

Java 可重入锁内存可见性分析

转载自 深度好文 | Java 可重入锁内存可见性分析一个习以为常的细节之前在做 ReentrantLock 相关的试验,试验本身很简单,和本文相关的简化版如下:(提示:以下代码均可左右滑动) private static ReentrantLoc…

java正则表达式 ^expr 和 [^expr] 和 ^[^expr]的比较

public class Main {private static String[] array {"Jav", "Java", "Hello"}; public static void main(String[] args) {String[] regexs {"^Java", // 以 Java开头的字符串"[^Java]",// 除了 J a v a 之外 的任何字符…

优秀 Java 程序员写代码的风格

转载自 涨姿势 | 优秀 Java 程序员写代码的风格今天突发奇想,对编码习惯和 编程风格 很感兴趣,于是乎,找了一下关于编程风格(Java篇)的资料,希望对爱好编码或者开始学习编码的同学有帮助!来自《…

2017尼毕鲁笔试算法题

【1】题目: 给定一个无序数组,找到最长的单调自增子序列(不一定连续,但是顺序不能乱)的长度; 【2】看个荔枝:给定数组 [10, 9, 2, 5, 3, 7, 101, 18] 输出结果为 [2, 3, 7, 101]。。算法时间…

2018年不能错过的 14 个 Java 库

转载自 2018年不能错过的 14 个 Java 库下面是整理给你的 2018 年不应该错过的 14 个 Java 库包清单,多多少少大家应该都接触过一些,如果还没听过那就OUT了。GuiceGuice是一个Java 6以上支持依赖注入框架。由谷歌提供。OkHttpHTTP是现代网络的通讯方式。…

Spring MVC Boot Cloud 技术教程汇总

转载自 Spring MVC & Boot & Cloud 技术教程汇总昨天我们发布了Java成神之路上的知识汇总,今天继续。 Java成神之路技术整理(长期更新) 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ Spring Cloud 的技术…

group by分组、having() 筛选组的用法

【1】选出 除语文学科外,且学科平均分大于60 的每个学科的最高最低分;

Java成神之路技术整理

转载自 Java成神之路技术整理以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,会从以下几个方面汇总,本文会长期更新。 Java 基础篇Java 集合篇Java 多线程篇Java JVM篇Java 进阶篇Java 新特性篇Java 工具篇Java 书籍篇 Java基础篇 8张图带你…