题外:

学习过程参考三份资料:《Redis入门指南》、《Redis实战》、http://redis.io

后面的学习笔记中会引入它们的内容或代码,在这里统一说明,后面笔记中便不再作特殊引用标记了。


Redis支持5大数据结构:stringshasheslistssets,sorted sets

Redis官网的第一句话就是:Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.

Strings类型是最基本的数据类型,它能够存储任何形式的数据。允许单个字符类型最大容量为512MB。字符串类型是其他4中数据类型的基础,其他数据类型与字符串类型的差别从某种程度上讲只是组织字符串的形式不同。 例如,散列表以散列的形式组织字符串,集合类型以集合的形式组织字符串。

这一节总结strings

1、常用命令:

SET key value [EX seconds] [PX milliseconds] [NX|XX]
SETEX key seconds value
PSETEX key milliseconds value
SETNX key value
GET key
GETSET key value MSET key value [key value ...]
MSETNX key value [key value ...]
MGET key [key ...] INCR key
INCRBY key increment
INCRBYFLOAT key increment
DECR key
DECRBY key decrement APPEND key value
STRLEN key
GETRANGE key start end SETBIT key offset value
GETBIT key offset BITCOUNT key [start end]
BITOP operation destkey key [key ...]
BITPOS key bit [start] [end]

2、命令解析

①、SET key value [EX seconds] [PX milliseconds] [NX|XX]

功能:设置一个key,可选项:

   EX:设置存活时间,单位秒,

   PX:设置存活时间,单位毫秒,

   NX:只有当key不存在的时候才执行,

   XX:只有当key存在的时候才执行(如果没有指定NX或XX那么,无论key是否存在都会执行。不存在,则新增key;存在,则覆盖原来的key)。

时间复杂度:O(1)

思考:上面的写法复制于官网,但是本人觉的这个写法不合适,应该写成SET key value [EX seconds | PX milliseconds] [NX|XX],因为EX与PX只能选其一,如果同时设置不会报错,但是只有后面的选项生效。

example

②、SETEX key seconds value / PSETEX key milliseconds value

功能:设置key,同时指定存活时间,两者不同在于前一个时间单位是“秒”,后一个为“毫秒”。等同于下面两条命令:

  SET mykey value
  EXPIRE mykey seconds / PEXPIRE mykey milliseconds

时间复杂度:O(1)

example

③、SETNX key value

功能:如果key不存在,则设置key;如果存在,则不作任何处理。

时间复杂度:O(1)

④、GET key

功能:获取key的值

时间复杂度:O(1)

⑤、GETSET key value

功能:将key的值设置为value,同时返回原来的key值。

时间复杂度:O(1)

example

⑥、MSET/MGET

功能:同上的SET和GET功能,最前面的“M”表示“多个”。

时间复杂度:O(N),其中N表示列表中key的个数

⑦、MSETNX key value [key value ...]

功能:当列表中所有key都不存在的时候,执行该操作。注意:如果列表中有某个key已经存在,则操作不会成功。

时间复杂度:O(N),N表示列表中key的个数

example

⑧、INCR key / INCRBY key increment / INCRBYFLOAT key increment

功能:INCR key是将key的值作加1操作。如果不是加1,则使用INCRBY key increment。如果key是一个浮点数,或者是要加的数是一个浮点数,则需要使用INCRBYFLOAT key increment。

时间复杂度:O(1)

example

⑨、DECR key / DECRBY key decrement

功能:将key的值作减1操作,或者是减去其它值

时间复杂度:O(1)

example

⑩、APPEND key value

功能:在key后面附加一个value值。相当于字符串的拼接操作。

时间复杂度:O(1)

example

思考:example中关于num的操作挺有意思的,可以将纯数字的strings作append操作,如果结果还能是一个纯数字,则可以执行incr等操作。

⑪、STRLEN key

功能:测量key的长度,单位为“字节”。实际上是key的值占用了多少个字节。

时间复杂度:O(1)

example

⑫、GETRANGE key start end

功能:返回子序列。从左到右是0,1,2...,从右到左-1,-2,-3...。也就是说,如果数字是正数,则表示“左起第xxx个”,0表示左起第一个;数值是负数,则表示“右起第xxx个”,-1表示右起第一个。注意:记住一点,返回结果是key对应value的子串,这就导致了要求“start指示的位置必须在end指示位置的左边”,否则返回结果为空串。

时间复杂度:O(N),N表示返回字符串的长度。

example

3、数据类型一:strings的更多相关文章

  1. redis数据类型:Strings

    String是最简单的数据类型,一个key对应一个value,string类型是二进制安全的,redis的String可以包含任何数据, 比如jpg图片或者系列化的对象. Set方法: 设置key对应 ...

  2. python初步学习-python数据类型之strings(字符串)

    数据类型-字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号(''或者"")来创建字符串 var1 = 'Hello World!' var2 = "P ...

  3. Redis的数据类型(Strings、 hashes)

    字符串(Strings)类型及操作 字符串是Redis值的最基础的类型,一个key对应一个value,Redis字符串是二进制安全的,这意味着一个Redis字符串可以包含任何种类的数据,例如一个JPE ...

  4. Redis数据类型Strings、Lists常用操作指令

    Redis数据类型Strings.Lists常用操作指令 Strings常用操作指令 GET.SET相关操作 # GET 获取键值对 127.0.0.1:6379> get name (nil) ...

  5. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  6. javascrit2.0完全参考手册(第二版) 第2章第4节 基本的数据类型

    每一个变量都有一个确定的类型表明它存储什么样的数据.js基本的数据类型有strings字符串.numbers数字.Booleans布尔类型.字符串是使用双引号或单引号包含的一串字符:数字包括整数或浮点 ...

  7. Redis入门到放弃系列-redis数据类型

    Redis数据类型? Redis 提供一些常用的数据类型:Strings.Lists.Sets.Sorted sets.Hashes.Arrays.Bitmap.Streams Strings(字符串 ...

  8. redis数据类型及应用场景

    0.key的通用操作 KEYS * keys a keys a* 查看已存在所有键的名字 ****TYPE 返回键所存储值的类型 ****EXPIRE\ PEXPIRE 以秒\毫秒设定生存时间 *** ...

  9. 高性能文件缓存key-value存储—Redis

    1.高性能文件缓存key-value存储-Memcached 2.ASP.NET HttpRuntime.Cache缓存类使用总结 备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文 ...

  10. Ruby基本语法规则

    1.Ruby常用数据类型 Numbers, Strings, Booleans my_num = 25 my_boollean = true (or false) my_string = " ...

随机推荐

  1. es6模块化开发

    export导出 import导入   export {a:b} Export default {a:b}

  2. 【pandas】pandas.Series.str.split()---字符串分割

    原创博文,转载请注明出处! 本文代码的github地址       series中的元素均为字符串时,通过str.split可将字符串按指定的分隔符拆分成若干列的形式. 例子: 拆分以逗号为分隔符的字 ...

  3. 奇异值分解(SVD)详解

    在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系.前段时间看了国外的一篇文章,叫A Singularly Valuable Decompos ...

  4. Hadoop常见错误问题及解决方法总结二

    问题导读:1.遇到问题该如何排除错误?2.看不到namenode的可能原因是什么?3.地址占用该如何解决?4.could only be replicatied to 0 nodes, instead ...

  5. java基础:eclipse编程不得不知道的技巧

    如果你是位具有开发经丰富的工程师,在开发的过程中,你就会很强烈的要求快捷的编程.如何快捷编程,只有更加熟悉开发工具.那么eclipse是同样也有很多技巧.可以带着下面问题来阅读1.如何查找类相关信息? ...

  6. maven的pom.xml文件配置说明

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  7. UVA11137 Ingenuous Cubrency

    题意 PDF 分析 考虑dp. 用\(d(i,j)\)表示用不超过i的立方凑成j的方案数. \(d(i,j)=d(i-1,j)+d(i,j-i^3)\) 时间复杂度\(O(IN+T)\) 代码 #in ...

  8. vs2013环境下boost配置

    编译boost库的过程这里暂时不写.  先写在vs2013下的boost配置. 新建一个工程, 1, 属性->C/C++,在附加包含目录添加或编辑Boost的文件路径, D:\boost_1_5 ...

  9. snmp安装zabbix

    zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.  zabbix由2部分构成,zabbix server与可选组件zabbix ...

  10. AT 指令和常见错误码

    一. 一般命令 1. AT+CGMI 给出模块厂商的标识. 2. AT+CGMM 获得模块标识.这个命令用来得到支持的频带(GSM 900,DCS 1800 或PCS 1900).当模块有多频带时,回 ...