当前位置: 首页 > 编程日记 > 正文

Redis初学:5(String类型的基本操作)

String类型

String类型是Redis中最基本的类型,String类型有以下的一些特点:

  • String类型是二进制安全的,这意味着String类型可以包含任何的数据,如:图片、序列化的对象等;
  • Redis中一个String类型的value的大小最大为512M

关于Redis中String类型所用到的数据类型

Redis中String类型底层所用的数据结构是简单动态字符串(SDS),在实现上类似于Java中的ArrayList,采取预分配冗余空间的方式来减少内存的频繁分配。
在这里插入图片描述
如上图所示,图中的len是字符串的实际长度,而capacity是实际分配的内存空间,实际分配的内存空间一般长于字符串的长度。当字符串大小小于1M的时候,扩容都是加倍现有的内存空间;如果超过1M,扩容时每次只会多增加1M的内存空间。
注意:String类型最大不能超过512M。

常用命令

往value后追加字符串

append key 追加的内容

如下图:
在这里插入图片描述
上面的11是指执行完追加操作之后,value的长度


获取value的长度

strlen key

如下图:
在这里插入图片描述

在key不存在时设置key的值

setnx key value

如下图:
设置成功
在这里插入图片描述
设置失败(此时key已经存在,所以设置失败)
在这里插入图片描述

String类型的数字进行加减法运算

将字符串型的数字进行加法操作

1.自增一

incr key

如下图:
在这里插入图片描述
返回加一后的值

2.自增规定的值

incrby key 增加的值

如下图:
在这里插入图片描述
PS:incr的自增是属于原子性操作,它不会被线程调度而打断
所谓的原子性操作不同于事务中的原子性,这里的原子性操作指的是不会被线程调度机制打断的操作
前面我们也说了,Redis内是单线程+多路IO复用的机制,所以,Redis的单条指令都是单线程的原子性操作。

将字符串型的数字进行减法操作

1.自减一

decr key

如下图:
在这里插入图片描述
2.自减相应的值

decrby key 减少的值

如下图:
在这里插入图片描述

同时对多个key和value进行操作

同时设置多个key和value值

1.mset可以进行同时设置多个键值的操作

mset key1 value1 key2 value2 ...

如下图:
在这里插入图片描述


2.msetnx和setnx类似,但是它可以同时设置多个键值,而且仅当这些key都不存在的时候

msetnx key1 value1 key2 value2...

如下图:
在这里插入图片描述
注意:因为Redis内的原子性的缘故,使用msetnx时如果有一个键值设置失败,则其他的键值也将会设置失败,如下图:
在这里插入图片描述
key11这个键已经存在了,所以使用msetnx设置键值失败,而前面的key44和key55也随之设置失败,所以查出来的结果为空


同时获取到多个键(key)的值

mget key1 key2 key3 

既然有mset,那么mget也不能少,mget可以同时获取到多个键的值

如下图:
在这里插入图片描述
同时获取到多个键里面存放的值。

对一定范围内的值进行操作

1.getrange获取一定范围内的值

getrange <key> <起始位置> <结束位置>

如下图:
在这里插入图片描述
我们可以从上图发现,getrange的操作起始类似于Java的substring操作,同样是获取指定范围内的字符串的

2.setrange覆写一定范围内的字符串

setrange <key> <起始位置> <value>

如下图:
在这里插入图片描述

3.getset以新值换旧值并获取旧的值

getset <key> <value>

如下图:
在这里插入图片描述

在设置key的同时设置过期时间

setex可以在设置key的同时设置key的过期时间

setex <key> <过期时间> <value>

如下图:
在这里插入图片描述

相关文章:

【PL/SQL】--导出oracle单表数据--drp204

转载于:https://www.cnblogs.com/wangmei/p/5187660.html

使用模块化编译缩小 apk 体积

libcocos2dlua.so编译出来有11M多&#xff0c;其中包含了很多不需要的模块&#xff0c;模块化编译&#xff0c;把不需要用到的模块弄成0&#xff0c;体积就小了。 如&#xff1a; 修改D:\codeide\sDiShu2formm\frameworks\runtime-src\proj.android\jni\Application.mk为 ifeq …

matlab2013a vs2013 opencv2.4.8 编译TLD

出现如下错误是因为编译方法不对&#xff0c;&#xfeff;&#xfeff;bb_overlap.cpp(36) : error C3861: “min”: 找不到标识符 bb_overlap.cpp(36) : error C3861: “max”: 找不到标识符 bb_overlap.cpp(37) : error C3861: “min”: 找不到标识符 bb_overlap.cpp(3…

UE5和Blender中的完整场景环境创建学习教程

UE5和Blender中的完整环境创建–深入课程 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|时长:80节课(30h 48m) |大小解压后:28 GB 了解专业环境艺术家…

Redis初学:6(List类型)

List类型 List的特点&#xff1a;单键多值 Redis的List是简单的字符串列表&#xff0c;按照插入顺序排序。可以添加一个元素到列表的头部&#xff08;左边&#xff09;或者尾部&#xff08;右边&#xff09;。 它的底层实际是个双向链表&#xff0c;对两段的操作性能很高&…

2.交叉工具链

2.交叉工具链 一、交叉工具链&#xff1a; 交叉工具链&#xff0c;其实他有两个含义&#xff0c;一个就是交叉工具&#xff0c;所谓的交叉工具就是运行的环境和编译的环境不是在一体的。就像我们现在&#xff0c;编译裸机程序是在pc机上面执行的。可我们运行程序是在开发板。…

Windows内存管理和linux内存管理

windows内存管理 windows 内存管理方式主要分为&#xff1a;页式管理&#xff0c;段式管理&#xff0c;段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页&#xff1b;页式管理把内存空间按照页的大小划分成片或者页面&#xff0c;然后把页式虚拟地…

UltraEdit 21激活

无需断网 UE v21.00.0.1033激活UE v21.00.0.1033激活UE v21.00.0.1033激活UE v21.00.0.1033激活UE v21.00.0.1033激活 UE v21.00.0.1056激活UE v21.00.0.1056激活UE v21.00.0.1056激活UE v21.00.0.1056激活UE v21.00.0.1056激活 点击我去下载激活器 如果激活遇到“ultraEdit …

Unity创建使用操纵杆飞行动画教程

Unity 3d移动超级英雄使用操纵杆飞行 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:20节课(5h 16m) |大小解压后:3.37 GB 含 COURSE FOLDER FIL…

Redis初学:7(Set类型)

Set集合类型 简介 Redis里面的Set类型跟Java里面的Set一样&#xff0c;都是带有自动除重的&#xff0c;它里面不会出现重复的数据。 特点&#xff1a;自动除重 底层数据结构 Redis中的Set是一个String类型的无序集合&#xff0c;它的底层其实是一个value值为null的hash表&a…

GitHub上README.md教程

http://blog.csdn.net/kaitiren/article/details/38513715 最近对它的README.md文件颇为感兴趣。便写下这贴&#xff0c;帮助更多的还不会编写README文件的同学们。 README文件后缀名为md。md是markdown的缩写&#xff0c;markdown是一种编辑博客的语言。用惯了可视化的博客编辑…

SolidWorks大师班:从基础到专业学习教程

流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:2.4 GB 含课程文件 |时长:3h 11m 从基础开始学习SolidWorks&#xff0c;借助本课程达到极致。…

Delphi 之Copyrect的使用

http://cqujsjcyj.iteye.com/blog/380970 Copyrect的使用&#xff08;图片复制、放大、以及做图片放大镜等&#xff09;一、从一个选取一个区域中的图象到另一个图象组件中的固定区域procedure TForm1.Button1Click(Sender: TObject);var rtDest, rtSource: TRect; rtIndex: …

Redis初学:8(Hash类型)

Hash&#xff08;哈希&#xff09;类型 简介 Redis中的hash是一个键值对集合。它是一个String类型的field和value的映射表&#xff0c;所以它特别适合用来存储对象。 如下图&#xff1a; Redis中的hash类似于Java中的Map<String,Object>。 底层数据结构 Hash类型对…

在JLabel上显示图片,并且图片自适应JLabel的大小

本文转载地址&#xff1a; http://blog.csdn.net/xiaoliangmeiny/article/details/7060250 在写《Core Java》上的示例代码时&#xff0c;其中有一个FileChooserTest是打开一张图片&#xff0c;并在Label上显示出来&#xff0c;但是这个示例程序有缺点&#xff0c;由于窗口的大…

适合编程的字体

编程字体从美观和易辩上来说&#xff0c;Deja Vu 是我最喜欢的免费字体家族之一&#xff0c;基于Vera字体家族。 非常容易辨别小写字母L&#xff0c;小写字母I和数字1&#xff1b;字母o&#xff0c;O和数字0. 还有几款比较受欢迎的字体&#xff0c;列在下面&#xff0c;挑选…

Blender和Substance Painter复古相机创作学习教程

时长2h 30m 1280X720 MP4 大小解压后&#xff1a;2G 含课程文件 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; Blender 3D和Substance Painter中的复古相机创作 课程获取&#xff1a;Blender和Substance Painter复古相机创作学习教程-云…

20160203.CCPP体系详解(0013天)

程序片段(01):数组.c02.数组初始化语法.c 内容概要:数组 ///01.数组.c #include <stdio.h> #include <stdlib.h>//01.采用容器结构存储数据的要点: // 1.必须为每个数据分配独立的存储空间 // 2.必须为每个数据分配独立的标识符(变量名称) //02.C语言之C99语法的…

Redis初学:9(Zset类型)

Zset&#xff08;有序集合&#xff09;类型 简介 Redis里面的有序集合Zset和集合Set非常相似&#xff0c;都是一个没有重复元素的字符串集合。 不同之处是有序集合Zset里面的每个成员都关联了一个评分&#xff08;score&#xff09;&#xff0c;这个score被用来按照从最低分到…

QQ和新浪微博登陆第三方的简单实现

一、微博登陆第三方 0、去开发平台完成开发者认证&#xff1a;http://open.weibo.com/developers/basicinfo 创建一个示例应用&#xff0c;获取APPKey 1、登陆有两种方式&#xff1a;jshtml和WBML部署。以jshtml为例&#xff0c;申请到APPKey之后&#xff0c;引入js,要替换掉ap…

matlab 取消figure显示时在屏幕最前

matlab 取消figure显示时在屏幕最前 matlab 取消figure显示时在屏幕最上层。 matlab运行代码或调试代码时&#xff0c;如果要显示图片figure或者画plot等&#xff0c;如果用的代码不合适&#xff0c; 会使得figure获取屏幕焦点&#xff0c;跑到屏幕最上方。如果跑代码的同时…

使用Blender Houdini轻松学习FX特效

大小&#xff1a;1G 含课程文件 时长1h 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 使用Blender & Houdini学习轻松的FX 信息: 使用Houdini和Blender轻松制作逼真的外汇模拟 Learn Easy FX with Blender & Houdin…

angular初步认识一

最近比较流行MVC前端框架开发&#xff0c;最近研究了一个框架AngularJS框架 不说那么多&#xff0c;先上例子&#xff0c;我是个代码控 <!DOCTYPE html> <html lang"en" ng-app"myApp"> <head><meta charset"UTF-8"><…

Redis初学:11(Redis的配置文件)

Redis的配置文件 Units单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit。 大小写不敏感&#xff0c;可以用大写也可以用小写。 Includes包含 类似jsp中的include&#xff0c;多实例的情况可以把公用的配置文件提取出来。 Ne…

目标跟踪之卡尔曼滤波---理解Kalman滤波的使用

http://www.cnblogs.com/jcchen1987/p/4371439.html转载于:https://www.cnblogs.com/pengkunfan/p/4372647.html

为什么对高斯分布的方差的极大似然估计是有偏的?

本文要证明为什么对高斯分布的方差的极大似然估计是有偏的。同时&#xff0c;也说明为什么求样本方差时&#xff0c;分母是N-1而不是N。 首先&#xff0c;明白两点&#xff0c;&#xff08;1&#xff09;极大似然法得到的高斯方差是什么形式&#xff08;2&#xff09;什么是有…

使用Blender中的几何节点创建程序对象

大小解压后&#xff1a;2.4G 持续时间3h 30m 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 使用Blender中的几何节点按程序创建对象 信息: 使用Blender中的几何节点按程序创建对象 开始在Blender中使用非破坏性技术和几何节…

Redis初学:14(Redis中的事务)

Redis中的事务 Redis的事务定义 Redis事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 Redis中的事务操…

接口两种实现方式

以前在用到接口时&#xff0c;从来没注意到接口分为隐式实现与显示实现。昨天在浏览博客时看到相关内容&#xff0c;现在根据自己的理解记录一下&#xff0c;方便日后碰到的时候温习温习。 通俗的来讲&#xff0c;“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实…

Android程序如何在代码中改变图片原有的颜色

最近一边找工作一边完善之前的项目。之前安卓初中级的项目是模仿酷狗音乐播放器的。下载一个apk文件&#xff0c;改后缀&#xff0c;解压&#xff0c;然后根据官方应用的布局&#xff0c;用得到的图片照着做出来。记得酷狗首页有好几种主要图标&#xff0c;解压后得到的白色加透…