**string类型介绍**
与大多编程语言中的字符串类型一样,Redis的字符串也是字符序列,它是Redis中最为基础的数据存储类型,具有以下特点:
字符串类型是Redis中二进制安全的,这就意味着它们都有一个已知的长度,可以接受任何格式的数据(如信息交换中常用的Json格式字符串,甚至图像数据)。
Redis中字符串类型最多可以容纳的数据长度可达512M。
**string类型相关命令**
Redis字符串命令主要用于管理字符串值,主要包括以下命令:
**1、 set命令**
set命令用于设置指定键的值,具体格式为:
set key value [ex 秒数] [px 毫秒数] [nx/xx]
各个选项的含义如下:
ex:设置指定的到期时间,单位为秒
px:设置指定的到期时间,单位为毫秒,如果ex和px同时写,则以后面的有效期为准
nx:如果对应key不存在则创建
xx:如果对应key存在则修改其值
示例1:
```
127.0.0.1:6379> set mykey "this is redis"
OK
```
在示例1中,用set命令来设置key、value,操作成功后终端打印出“OK”。
**2、get命令**
get命令用来获取指定键的值,如果键不存在,则返回nil,如果返回值不是字符串,则返回错误。具体格式为:
get key
示例2:
```
127.0.0.1:6379> get mykey"this is redis"
127.0.0.1:6379> get yourkey(nil)
```
**3、mset命令**
mset命令用于一次性设置多个键和值,和set命令一样操作成功后返回字符串“OK”。具体格式为:
mset key1 value1 key2 value2 ...
示例3:
```
127.0.0.1:6379> mset key1 "this is key1" key2 "this is key2"
OK
127.0.0.1:6379> get key1
"this is key1"
127.0.0.1:6379> get key2
"this is key2"
```
**4、mget命令**
mget命令用于返回所有给定键的值。对于某个不存在值的键或者不存在的键,返回nil,否则返回指定键的值列表。具体格式为:
mget key1 key2 ...
示例4:
```
127.0.0.1:6379> set key1 "hello"
OK
127.0.0.1:6379> set key2 "world"
OK
127.0.0.1:6379> mget key1 key2 key3
1) "hello"
2) "world"
3) (nil)
```
**5、setrange命令**
setrange命令将字符串中偏移量为offset后的子串覆盖为指定的值,该命令返回修改后的字符串的长度。具体格式为:
setrange key offset value
如果偏移量offset > 原字符串长度,不足部分用0x00补全。
示例5:
```
127.0.0.1:6379> set key1 "Hello World"
OK
127.0.0.1:6379> setrange key1 6 "Redis"
(integer) 11
127.0.0.1:6379> get key1
"Hello Redis"
127.0.0.1:6379> setrange key1 15 "Hei"
(integer) 18
127.0.0.1:6379> get key1
"Hello Redis\x00\x00\x00\x00Hei"
```
**6、setex命令**
setex命令用来设置指定键的值,并指定该键值对应的存在时间(单位:秒)。具体格式如下:
setex key seconds value
示例6:
```
127.0.0.1:6379> setex key1 5 "hello" // 5s的过期时间
OK
127.0.0.1:6379> get key1 // 马上访问
"hello"
127.0.0.1:6379> get key1 // 5s后访问
(nil)
```
7、setnx命令
setnx命令也可以用来设置指定键的字符串值,但该命令在设置前需要检查指定键是否已经存在。如果存在,则该命令的作用和set命令一样,操作完成后返回1,否则不重新设置已经存在的键的字符串值,直接返回0。具体格式如下:
setnx key value
示例7:
```
127.0.0.1:6379> setnx key1 "Hello"
(integer) 1
127.0.0.1:6379> setnx key1 "World"
(integer) 0
127.0.0.1:6379> get key1
"Hello"
```
**8、append命令**
故名思议,append命令将字符串追加到指定键的原值上,返回值为新字符串的长度。具体格式为:
append key value
示例8:
```
127.0.0.1:6379> set key1 "Hello "
OK
127.0.0.1:6379> append key1 "World"
(integer) 11
127.0.0.1:6379> get key1
"Hello World"
```
**9、getrange命令**
getrange命令获取字符串指定范围的子串,具体格式为:
getrange key start stop
getrange命令返回字符串中下标范围为[start,stop]范围的值。类似python,该命令下标支持负偏移量,右边第一个下标为-1。假设字符串的长度为length,getrange根据以下原则决定返回值:
当start > length,则返回空字符串
当stop >= length,则截取至字符串尾
如果start > stop,则返回空字符串
如果0 <= start <= stop < length,返回指定范围的子串
示例9:
```
127.0.0.1:6379> set key1 "This is getrange testing"
OK
127.0.0.1:6379> getrange key1 5 6
"is"
127.0.0.1:6379> getrange key1 100 200
""
127.0.0.1:6379> getrange key1 5 100
"is getrange testing"
```
**10、incr命令**
incr命令用于自增一个指定键对应的整数值并返回新的值。如果该键不存在,则创建该键,对应的value被置为0然后执行自增操作,如果该键对应的值不能转换为整数,则返回错误。
具体格式为:
incr key
示例8:
```
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incr key1
(integer) 11
127.0.0.1:6379> incr key2
(integer) 1
127.0.0.1:6379> set key2 "non"
OK
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
```
**10、incrby命令**
该命令与incr命令相似,不同的是:incrby命令可以自定义自增值,这也是命令中“by”的含义。具体格式为:
incrby key k
示例9:
```
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incrby key1 5
(integer) 15
127.0.0.1:6379> get key1
"15"
```
**11、incrbyfloat命令**
从字面上我们就可以看出incrbyfloat是和incrby相似的命令,不同的是:incrbyfloat对指定键的值自增一个浮点数。该命令返回修改后的新值。具体格式为:
incrbyfloat by f
示例10:
```
127.0.0.1:6379> set key1 100
OK
127.0.0.1:6379> incrbyfloat key1 0.5
"100.5"
```
**12、decr和decrby命令**
decr命令和incr命令作用相反,具体格式如下:
decr key
decrby命令和incrby命令作用相反,具体格式如下:
decrby key decrement
**13、strlen命令**
strlen命令返回指定键的字符串值的长度。具体格式为:
strlen key
示例13:
```
127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11
```
**14、setbit命令**
setbit命令用来设置指定键的字符串在offset偏移量上对应二进制位上的值,并返回该为上的旧值。由于该命令操作的是二进制位,所以设置的新值只能为0或1。如果指定key不存在,则创建一个新值并在指定的offset上设置二进制值。如果offset大于字符串的长度,不足部分用0填充后在指定offset上设置二进制值。具体格式如下:
setbit key offset value
示例14:
```
127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11
```
15、getbit命令
与setbit命令相对应,getbit命令用于返回指定偏移量offset上二进制位的值。如果offset大于value的长度,或者指定key不存在,则返回0。具体格式如下:
getbit key offset
示例15:
```
127.0.0.1:6379> setbit key1 7 1
(integer) 1
127.0.0.1:6379> getbit key1 7
(integer) 1
127.0.0.1:6379> getbit key1 100
(integer) 0
```
- 技能知识点
- 对死锁问题的理解
- 文件系统原理:如何用1分钟遍历一个100TB的文件?
- 数据库原理:为什么PrepareStatement性能更好更安全?
- Java Web程序的运行时环境到底是怎样的?
- 你真的知道自己要解决的问题是什么吗?
- 如何解决问题
- 经验分享
- GIT的HTTP方式免密pull、push
- 使用xhprof对php7程序进行性能分析
- 微信扫码登录和使用公众号方式进行扫码登录
- 关于curl跳转抓取
- Linux 下配置 Git 操作免登录 ssh 公钥
- Linux Memcached 安装
- php7安装3.4版本的phalcon扩展
- centos7下php7.0.x安装phalcon框架
- 将字符串按照指定长度分割
- 搜索html源码中标签包的纯文本
- 更换composer镜像源为阿里云
- mac 隐藏文件显示/隐藏
- 谷歌(google)世界各国网址大全
- 实战文档
- PHP7安装intl扩展和linux安装icu
- linux编译安装时常见错误解决办法
- linux删除文件后不释放磁盘空间解决方法
- PHP开启异步多线程执行脚本
- file_exists(): open_basedir restriction in effect. File完美解决方案
- PHP 7.1 安装 ssh2 扩展,用于PHP进行ssh连接
- php命令行加载的php.ini
- linux文件实时同步
- linux下php的psr.so扩展源码安装
- php将字符串中的\n变成真正的换行符?
- PHP7 下安装 memcache 和 memcached 扩展
- PHP 高级面试题 - 如果没有 mb 系列函数,如何切割多字节字符串
- PHP设置脚本最大执行时间的三种方法
- 升级Php 7.4带来的两个大坑
- 不同域名的iframe下,fckeditor在chrome下的SecurityError,解决办法~~
- Linux find+rm -rf 执行组合删除
- 从零搭建Prometheus监控报警系统
- Bug之group_concat默认长度限制
- PHP生成的XML显示无效的Char值27消息(PHP generated XML shows invalid Char value 27 message)
- XML 解析中,如何排除控制字符
- PHP各种时间获取
- nginx配置移动自适应跳转
- 已安装nginx动态添加模块
- auto_prepend_file与auto_append_file使用方法
- 利用nginx实现web页面插入统计代码
- Nginx中的rewrite指令(break,last,redirect,permanent)
- nginx 中 index try_files location 这三个配置项的作用
- linux安装git服务器
- PHP 中运用 elasticsearch
- PHP解析Mysql Binlog
- 好用的PHP学习网(持续更新中)
- 一篇写给准备升级PHP7的小伙伴的文章
- linux 安装php7 -系统centos7
- Linux 下多php 版本共存安装
- PHP编译安装时常见错误解决办法,php编译常见错误
- nginx upstream模块--负载均衡
- 如何解决Tomcat服务器打开不了HOST Manager的问题
- PHP的内存泄露问题与垃圾回收
- Redis数据结构 - string字符串
- PHP开发api接口安全验证
- 服务接口API限流 Rate Limit
- php内核分析---内存管理(一)
- PHP内存泄漏问题解析
- 【代码片-1】 MongoDB与PHP -- 高级查询
- 【代码片-1】 php7 mongoDB 简单封装
- php与mysql系统中出现大量数据库sleep的空连接问题分析
- 解决crond引发大量sendmail、postdrop进程问题
- PHP操作MongoDB GridFS 存储文件,如图片文件
- 浅谈php安全
- linux上keepalived+nginx实现高可用web负载均衡
- 整理php防注入和XSS攻击通用过滤