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>
如下图:
Redis初学:5(String类型的基本操作)相关推荐
- Redis 学习笔记(1)—— Redis安装,String 类型测试
1 Redis 介绍 1.1 概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案. Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许 ...
- Redis工作笔记-String类型
目录 简介 操作 简介 Redis存储以key-value的形式进行存储,key只能存字符串类型,value可以为:String.List.Set.Sorted-Sets.Hash: 字符串类型是Re ...
- redis命令之string类型setex命令用法详情
Stirng字符串 SETEX命令 命令:setex key seconds value 设置有效时间为seconds的key-value键值对,单位为秒,返回"OK",若之 ...
- redis命令之string类型incr/decr命令用法详情
Stirng字符串 INCR命令/DECR命令 限制在64位有符号整数 命令:incr key 对key存储的value值+1,并将最终的结果作为返回值:decr key 对key存储的value值- ...
- Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景
Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...
- 带你掌握Redis数据类型:string和Hash
摘要:Redis中有五大数据类型,分别是String.List.Set.Hash和Zset. 本文分享自华为云社区<Redis的string类型常用命令解析>,作者:灰小猿 . 先问大家一 ...
- 系统学习redis之五——redis数据类型之list类型及操作
list数据类型介绍 list是一个链表结构,主要功能是push.pop.获取一个范围的所有值等等,操作中key可以理解为链表的名字.redis的list类型其实就是一个每个子元素都是string类型 ...
- 小白学C++ L11 数组和字符数组及string 类型
数组 C++使用数组来实现一次性声明很多变量的功能,具有以下特性: 创建后的数组大小固定 同一数组中的元素类型相同 是一系列数据顺序集合 数组如何声明 在C++中声明数组时,需要指定元素类型.数组名称 ...
- Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)
字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...
最新文章
- 不要怂,就是GAN (生成式对抗网络) (六):Wasserstein GAN(WGAN) TensorFlow 代码
- python实现简单的api接口-对Python实现简单的API接口实例讲解
- 复用的具体实现方式组合与继承的特点
- Emacs高亮设置:Hi-Lock mode笔记
- c++ 函数过长 拆分_实用EXECL办公函数 【多条件排名】
- JQ 实现点击按钮显示弹窗,点击非弹窗和按钮区域隐藏弹窗
- Struts2.xml
- python中使用%与.format格式化文本
- 文件标准标准IO与文件IO 的区别
- 软件开发人员如何提高个人和团队工作效率
- mysql 子链接_MySQL多表查询实例详解【链接查询、子查询等】
- 天大18年c语言离线作业,2018春 Python语言程序设计(天津大学仁爱学院)-中国大学mooc-题库零氪...
- Lagrange multiplier method (拉格朗日乘数法)
- cocos2d-之音乐背景播放
- 案例三:淘宝用户行为分析
- mdx词典包_欧路词典PC端 词库安装 渲染
- 满城尽带黄金“假”(二)——断臂殇为谁而鸣
- Ubuntu最全问题汇总(好东西分享了)
- 区块链浏览器在linux下部署
- 对比Mac OS上的PF与iptables
热门文章
- 【进阶玩法】Angular用emit()实现类似Vue.js的v-model双向绑定[(ngModel)]功能
- 舒工自定义AJAX-lite 1.0实用型极简方法
- 用Python和项目进行机器学习(初学者) Machine Learning A-Z with Python with Project (Beginner)
- 完整的Python 3和树莓Pi大师课 Complete Python 3 and Raspberry Pi Masterclass
- Blender多米诺骨牌动画学习教程 The Impossible Domino Run in Blender
- Linux 的内存管理工具和调优参数
- Go 分布式学习利器(6)-- Map
- linux进程间通信:命名管道FIFO
- 数据结构|-常见数据结构整理
- python 之路,Day11 (下)- sqlalchemy ORM