string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

它能存储任何形式的字符串,包括二进制数据,邮箱,json化的对象,甚至是一张图片。允许存储数据最大是 512MB。

使用场景 : 缓存,计数器,微博数,粉丝数,分布式锁

set

设置给定key的值,如果已存在覆盖,无视类型.set命令执行后,之前设置的过期时间失效.正常返回ok,如果加了nx或者xx,没有设置条件,返回nil

从2.6.12版本开始,redis为SET命令增加了一系列选项:
EX seconds –设置键key的过期时间,单位时秒
PX milliseconds –设置键key的过期时间,单位时毫秒
NX – 只有键key不存在的时候才会设置key的值
XX – 只有键key存在的时候才会设置key的值
  • setxx : 指定key存在,为key设置给定的值(成功1,失败0)
127.0.0.1:6379> set yhq qhh xx
(nil)
127.0.0.1:6379> set yhq qhh
OK
127.0.0.1:6379> set yhq qhh1 xx
OK
127.0.0.1:6379> get yhq
"qhh1"
  • setnx : 指定的key不存在时,为key设置给定的值(成功1失败0)

> setnx yhq 123
(integer) 1
> setnx yhq 123
(integer) 0
  • ex : 设置key的过期时间,单位秒
> set yhq qhh ex 10
OK
> get yhq
"qhh"
> get yhq # 超时
(nil)
  • setex : 设置key的过期时间,如果值存在覆盖

> setex yhq  qhh
OK
> get yhq
"qhh"
> setex yhq 10 qqqq
OK
> get yhq
"qqqq"
> get yhq #超时
(nil)

expire : 设置key的过期时间,成功返回1,失败或者key不存在返回0

> expire yhq 10
(integer) 0
> set yhq qhh
OK
> expire yhq 5
(integer) 1
> get yhq # 超时
(nil)

px : 设置key的过期时间,单位毫秒

> set yhq qhh px 10000
OK
> get yhq
"qhh"
> get yhq #超时
(nil)

psetex : 设置key的过期时间,单位毫秒

> psetex yhq  qhh
OK
> get yhq
"qhh"
> get yhq #超时
(nil)

pexpire : 设置key的过期时间,单位毫秒,成功返回1,失败或者不存在返回0

> pexpire yhq
(integer) 0
> set yhq qhh
OK
> pexpire yhq
(integer) 1
> get yhq
(nil)

ttl

以秒为单位返回key的剩余获取时间,当key不存在时返回-2,当key没有过期时间时返回-1

> set yhq 123
OK
> ttl yhq
(integer) -1
> expire yhq 10
(integer) 1
> ttl yhq
(integer)
> ttl yhq
(integer) -2

pttl : 以毫秒为单位返回key的剩余获取时间,当key不存在时返回-2,当key没有过期时间时返回-1

> set yhq 123
OK
> pexpire yhq 10086
(integer)
> pttl yhq
(integer)
> pttl yhq
(integer) -2

persist : 移除给定key的过期时间,使其永不过期(成功移除返回1,key不存在或者没有过期时间返回0)

> expire qhhyhq 100
(integer)
> ttl qhhyhq
(integer)
> persist qhhyhq
(integer)
> ttl qhhyhq
(integer) -1
  • nx : 只有key不存在时才能设置
> set yhq qhh nx
OK
> set yhq 666 nx
(nil)
> set yhq 666
OK
> get yhq
"666"
  • xx : 只有key存在时才能设置
> set yhq qhh xx
(nil)
> set yhq qhh
OK
> set yhq 666 xx
OK

dump : 序列化给定key,返回被序列化的值,使用restore反序列化,key不存在返回nil

  • 它带有64位的校验和,用于检测错误,restore在进行反序列化之前会先检查校验和
  • 值的编码和RDB文件保持一致
  • RDB版本会被编码在序列化值中,如果因为redis版本不用造成RDB格式不兼容,nameredis会拒绝对这个值进行反序列化操作
> dump yhq
(nil)
> set yhq qhh
OK
> dump yhq
"\x00\x03qhh\x06\x00\xa1\xc2\xcd\\\xe2\x96\xbd\xe3"

restore : 反序列化给定的序列化值,并将它和给定的key关联,参数ttl以毫秒为单位为key设置生存时间,如果ttl为0,那么不设置生存时间(restore在执行反序列化之前会先对序列化值的RDB版和数据进行检查,如果RDB版本不完整的话,那么restore会拒绝进行反序列化,并返回一个错误)

> restore yhq-msg 0 "\x00\x03qhh\x06\x00\xa1\xc2\xcd\\\xe2\x96\xbd\xe3"
OK
> get yhq-msg
"qhh"

strlen : 获取key的长度(key不存在返回0,key不是字符串类型返回一个错误)

> strlen yhq
(integer) 3
> strlen yhqqhh
(integer) 0

setrange : 用给定的字符串覆盖key,从offset开始

> setrange yhq qhh
(integer) 9
> get yhq
"012345qhh"

> get yhq
"012345"
> setrange yhq qhh
(integer) 10
> get yhq
"012345\x00qhh"
> set yhq 012345
OK
> get yhq
"012345"
> setrange yhq 2 yhqqhhhhh
(integer) 11
> get yhq
"01yhqqhhhhh"

getset : 设置给定key的值,并返回key的旧值(没有旧值返回nil,当key存在但不是一个字符串类型时,返回一个错误)

> get yhq
"6"
> getset yhq 666
"6"
> get yhq
"666"

mset : 设置一个或者多个键值对

> mset yhq 123 qhh 321
OK

mget : 获取一个或者多个键值对(如果某个key不存在,返回nil)

> mget yhq qhh yhqqhh
1) "123"
2) "321"
3) (nil)

getrange : 获取key的子字符串

> get yhq
"123"
> getrange yhq 0 1
""
> getrange yhq 0 -1
"123"

msetnx : 设置多个key,当所有key设置成功(不存在)返回1,如果失败(至少有一个存在)返回0

> msetnx q 132 y 123
(integer) 1
> msetnx q 132 yhq 123
(integer) 0

append : 给定key追加val,如果不存在则set,返回val的长度

> append yhq 123
(integer) 3
> get yhq
"123"
> append yhq '-666'
(integer) 7
> get yhq
"123-666"

incr : 给定key数值+1,如果key不存在,先set key 0再+1

> incr yhq
(integer) 1
> incr qhh
(error) ERR value is not an integer or out of range

decr : 给定key数值-1,如果key不存在,先set key 0再-1

> decr yhq
(integer) -1
> decr qhh
(error) ERR value is not an integer or out of range

incrby / decrby : 增加/减少给定值

> get yhq
"-1"
> incrby yhq 666
(integer) 665
> decrby yhq 555
(integer) 110

incrbyfloat: 增加给定浮点值

> get yhq
"110"
> incrbyfloat yhq 6.6
"116.6"
 
 

位操作 : 一个字节由8个二进制位组成

> set yhq bar
OK
> get yhq
"bar"

bar  在ASCII码中分别是  01100010   ,    01100001   , 01110010

getbit : 获取字符串指定二进制位的值,索引从0开始,超出索引默认为0

> getbit yhq 6
(integer) 1
> getbit yhq 600
(integer) 0

将a转换为A  A在ASCII码中是 65     0100 0001

setbit : 设置字符串指定二进制位的值,返回值是该位置旧的值,索引从0开始,超出长度,自动将中间的二进制设置为0,不存在的键会将其前面的赋值0

> setbit yhq 10 0
(integer) 1
> get yhq
"bAr"

01100010   ,    01000001   , 01110010

bitcount : 统计二进制位是1的个数,可以指定范围(bA 0-1),不存在返回0

> bitcount yhq
(integer) 9
> bitcount yhq 0 1
(integer) 5

Redis之字符串类型命令的更多相关文章

  1. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  2. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

  3. Redis常用命令入门1:字符串类型命令

    Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...

  4. redis之(四)redis的字符串类型的命令

    [一]获得符合规则的键名列表  -->命令  keys [pattern] -->keys命令需要遍历Redis中所有的键,当键的数量比较多会影响性能,生产环境不建议用 -->pat ...

  5. python之Redis的字符串类型操作

    redis的数据类型: 字符串型    哈希     列表     集合     有序集合 1.String(字符串类型) set  命令:   设置一个键和值,键存在则只覆盖,返回ok > s ...

  6. Redis入门---字符串类型

    阅读目录 1.keys * 命令 2.判断一个键是否存在(exists key) 3.删除键 4.获取键值的数据类型 5 递增数字(incr) 6.增加指定的整数 (INCRBY) 7.减少指定的整数 ...

  7. 03 redis之string类型命令解析

    Redis字符串类型的操作 set key value [ex 秒数] / [px 毫秒数] [nx] /[xx] 如: set a 1 ex 10 , 10秒有效 Set a 1 px 9000 , ...

  8. redis:string字符串类型的操作

    1. string字符串类型的操作: 1.1. set 设置单个值 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 注: EX seco ...

  9. Redis 常用命令学习二:字符串类型命令

    1.赋值与取值命令 127.0.0.1:6379> set foo helloredis OK 127.0.0.1:6379> get foo "helloredis" ...

随机推荐

  1. redis环境搭建与配置

    通过初始化脚本启动redis 1.将redis源码的utils文件夹下面有的redis_init_script复制到/etc/init.d/redis_端口号下面. 带密码的实例 REQUIRED_P ...

  2. 使用Ajax生成的Excel文件并下載

    很久沒有寫文章啦,今天分享一個如何在ASP.NET MVC里使用Ajax下載生成文件的方法,以下只是個人心得: 大家都應該知道,在ASP.NET MVC里,如果通過Ajax調用后臺控制器時,可以返回一 ...

  3. Filter过滤器原理和登录实现

    Filter过滤器API      Servlet过滤器API包含了3个接口,它们都在javax.servlet包中,分别是Filter接口.FilterChain接口和FilterConfig接口. ...

  4. 谷歌发布"自动机器学习"技术 AI可自我创造

    谷歌发布"自动机器学习"技术 AI可自我创造 据Inverse报道,今年5月份,谷歌宣布其人工智能(AI)研究取得重大进展,似乎帮助科幻小说中最耸人听闻的末日预言成为现实.谷歌推出 ...

  5. 网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析

    网络营销相关缩写名称CPM CPT CPC CPA CPS SEM SEO解析 CPM CPT CPC CPA CPS SEM SEO在网络营销中是什么意思?SEO和SEM的区别是? CPM(Cost ...

  6. python进程编程

    多进程multiprocess模块 multiprocessing is a package that supports spawning processes using an API similar ...

  7. Nginx 灰度实现方式(支持纯灰度,纯生产,50度灰及更多比例配置)

    前言 Nginx相关技术短信本篇幅不做详细介绍,所以学习本文之前要对Nginx有相关的了解. 生产环境即线上环境,在经历开发.测试再到上线,不可避免的会更新生产环境,但谁又能保证测试过的代码到线上运行 ...

  8. Sybase 删除表的某列

    Sybase 删除表的某列 Sybase 删除表的某列sql: --想删除字段temp1(该字段的所有值已置为null) alter table nh_bill_detail drop temp1;

  9. Python3.x(windows系统)安装libxml2库

    Python3.x(windows系统)安装libxml2库 cmd安装命令: pip install lxml 执行结果: 再执行命令: pip install virtualenv 执行结果:

  10. centos下nginx安装与配置

    nginx依赖以下模块: l  gzip模块需要 zlib 库 l  rewrite模块需要 pcre 库 l  ssl 功能需要openssl库 tar xzvf nginx-1.9.15.tar. ...