三、常用命令

  3.1 字符串类型(string)

    字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB。

    3.1.1 赋值与取值:

        SET key value

        GET key

    3.1.2 递增数字:

        INCR key      //每执行一次递增1

        INCRBY key num  //每执行一次递增num

      需注意的是如果多个客户端同时连接一个Redis时存在同时操作同一个key的隐患,将在事务讲解原子性。

      适用事例:文章统计量访问;生成自增ID;存储文章数据。

    3.1.3 递减数字

        DECR key      //每执行一次递减1

        DECRBY key num  //每执行一次递减num

    3.1.4 增加指定浮点数

        INCRBYFLOAT key num

    3.1.5 向尾部增加值

        APPEND key value

    3.1.6 获取字符串长度

        STRLEN key    //每个汉字占用3个长度

    3.1.7 同时设置/获取多个键值

        MSET key1 value1 key2 value2 ...

        MGET key1 key2 ....

  3.2 散列类型(hash)

    散列类型的字段值只能是字符串,包括不能嵌套其他的数据类型,其他的Redis数据类型也是不能嵌套

    散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,字段值存储属性值,如图所示:

    

    3.2.1 赋值与取值

        HSET key  field value       //设置对象单一属性值

        HGET key field          //获取对象单一属性值

        HMSET key field1 value1 field2 value2 ...    //设置对象多个属性值

        HMGET key field1 field2 ...     //获取对象多个属性值

        HGETALL key          //获取对象所有的键值

        说明:HSET不区分是更新操作还是插入操作,当键不存在时,执行的是插入操作,返回的是1;当键存在时,执行更新操作,返回0。

    3.2.2 判断字段是否存在

        HEXISTS key field

    3.2.3 当字段不存在时赋值

        HSETNX key field value

        说明:HSETNX和SET类似,只不过HSETNX是当字段存在时不进行任何的操作。

    3.2.4 增加数字

        HINCRBY key field num

        说明:字符串类型有INCR和INCRBY,散列类型没有HINCR命令,可以使用HINCRBY key field 1来实现

    3.2.5 删除字段

        HDEL key field      //返回被删除字段个数

        HDEL key field1 field2 ...

    3.2.6 只获取字段名或字段值

        HKEYS key

        HVALS key

    3.2.7 获取字段数量

        HLEN key

  3.3 列表类型(list)

    优点:列表数据类型的内部是使用双向列表实现的,获取接近链表两端的数据速度非常快。

    缺点:通过索引访问元素非常慢。

    3.3.1 向列表两端添加元素

      LPUSH key value  //向左边添加元素,指下一个元素添加在上一个元素的左边,依次往左  

      RPUSH key value  //向右边添加元素

    3.3.2 从列表两端弹出元素

      LPOP key      //在列表左边一次弹出一个,相当于在原列表中删除一个元素,返回弹出的元素

      RPOP key

      说明:若想要列表当做栈,使用LPUSH和LPOP或者RPUSH和RPOP;若想要列表当队列,使用LPUSH和RPOP或RPUSH和LPOP

    3.3.3 获取列表中元素的个数

      LLEN key

    3.3.4 获取列表片段

      LRANGE start stop    //获取从start到stop之间的元素,索引从0开始

    3.3.5 删除列表中指点的值

      LREM key count value

      当count>0时,LREM从列表左边删除count个值为value的元素;

      当count<0时,LREM从列表右边删除count个值为value的元素;

      当count=0时,LREM会删除列表中所有值为value的元素。

    3.3.6 获取/设置指定索引的元素值

      LINDEX key index

      LSET key index value

    3.3.7 只保留列表指定片段

      LTRIM key start end

      说明:LTRIM只保留从start到end的元素,列表其他元素都会被删除,这不同于LRANG的使用

    3.3.8 向列表中插入元素

      LINSERT key BEFORE/AFTER pivot value

      说明:在列表中查找值为pivot的元素,根据after还是before来插入元素,返回的是插入元素后的个数。

  3.4 集合类型(set)

    集合里存储的数据是无序的、唯一的。

    3.4.1 增加/删除元素

      SADD key num ...

      SREM key num ...

      说明:既然集合是无序且唯一的,如果添加元素时集合中已经存在,则忽略次元素;若不存在则自动创建。

    3.4.2 获取集合中的所有元素

      SMEMBERS key

    3.4.3 判断元素是否在集合中

      SISMEMBER key num  //当值存在返回1,当值或键不存在时返回0

    3.4.4 集合间运算

      SDIFF key num ...    //差集,属于A集合但不属于B集合

      SINTER key num ...   //交集,属于A集合同时也属于B集合

      SUNION key num ...   //并集,所有属于A或属于B构成的集合(A集合和B集合相加后去重)

    3.4.5 获得集合中元素的个数

      SCARD key

    3.4.6 进行集合运算并将结果存储

      SDIFFSTORE destination key

      SINTERSTORE destination key

      SUNIONSTORE destination key

      说明:SDIFFSTORE和SDIFF类似,只不过前者是将运算的结果存储到destination中,适用于将集合计算后的结果再与其他的集合运算。

    3.4.7 随机获得集合中的元素

      SRANDMEMBER key [count]  //还可以传递count值来一次获取多个元素

      说明:当count为正数时,会随机在集合中获取count个不重复的元素,当count大于集合长度时,则会返回集合的全部元素;

         当count为负数时,会随机从集合中获取|count|个有可能重复的元素。

    3.4.8 从集合中弹出一个元素

      SPOP key

      说明:之前列表类型的LPOP是每次从列表左边弹出元素,由于集合元素是无序的,SPOP会从集合中随机弹出一个元素。

  3.5 有序集合类型(zset)

    有序集合类型和列表类型相似之处:

       (1)二者都是有序的;

       (2)二者都可以获取某一范围内的元素;

    有序集合类型和列表类型区别之处:

       (1)列表类型内部是链表结构,对两端的元素操作速度快,对中间的操作速度慢;

       (2)有序列表类型是使用散列表和跳跃表实现的,所以阅读中间部分的数据也很快;

       (3)列表中不能简单的调整某个元素的位置,有序可以使用分数来实现;

       (4)有序列表类型要比列表类型更耗费内存。

    3.5.1 添加元素

      ZADD key score num ...  //如果添加的元素存在,则会用新的分数来替换掉旧的分数

    3.5.2 获取元素的分数

      ZSCORE key num

    3.5.3 获取某个范围内的元素

      ZRANGE key start stop [WITHSCORES]

      ZREVRANGE key start stop [WITHSCORES]

      说明:ZRANGE的顺序是从小到大,索引从0开始,ZREVRANGE是从大到小排列。WITHSCORES是排序的时候带着分数。

      若两个元素的分数相同,则会按照字典顺序排列("0"<"9<"A"<"Z"<"a"<"z")

    3.5.4 获取指定分数范围内的元素

      ZRANGBYSCORE key min max [WITHSCORES] [LIMIT offset count]

      说明:ZRANGEBYSCORE也是从小到大排序,若不希望包含端点值,则可以在score前加上"("符号。此外,-inf和+inf代表负无穷和正无穷。

         LIMIT offset count 在获得的元素列表的基础上向后偏移offset个元素,获取前count个元素。

    3.5.5 增加某个元素的分数

      ZINCRBY key increment num

      说明:若increment为负数,则代表减分。若指定的元素不存在,Redis会先创建并赋值为0后再进行操作。

    3.5.6 获取集合中元素的数量

      ZCARD key

    3.5.7 获取指定分数范围内元素的个数

      ZCOUNT key min max

    3.5.8 删除一个或多个元素

      ZREM key num ...

    3.5.9 按照排名范围删除元素

      ZREMRANGEBYRANK key start stop ...

    3.5.9.1 按照分数范围删除元素

      ZREMRANGEBYSCORE key start stop ...

    3.5.9.2 获得元素的排名

      ZRANK key num  ...

      ZREVRANK key num ..

      说明:获取的排名是从0开始的,ZRANK为分数最小的排名为0;ZREVRANK为分数最大的排名为0。

    

 

redis笔记总结之redis数据类型及常用命令的更多相关文章

  1. Redis数据类型和常用命令

    Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...

  2. 分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令

    Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...

  3. 分布式缓存技术redis学习(二)——详细讲解redis数据结构(内存模型)以及常用命令

    Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...

  4. 详细讲解redis数据结构(内存模型)以及常用命令

    Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...

  5. redis系列之2----详细讲解redis数据结构(内存模型)以及常用命令

    Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sor ...

  6. redis数据类型及常用命令介绍(图文实例)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...

  7. redis五种数据类型和常用命令及适用场景

    一.redis的5种数据类型: 1.基础理解: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) h ...

  8. Redis的数据类型及其常用命令

    快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...

  9. Redis集群(六):集群常用命令及说明

    一.本文目的        介绍集群的基本情况及常用命令      二.集群的特点    3.集群优缺点 三.集群客户端命令(redis-cli -c -p port) 集群cluster info ...

随机推荐

  1. 用Putty通过SSH访问Linux服务器

    1,sudo apt-get install ssh 2,sudo service ssh restart 3,重启ssh成功后,就可以直接用Putty访问服务器.

  2. Web开发框架推导

    本文欲回答这样一个问题:在 「特定环境 」下,如何规划Web开发框架,使其能满足 「期望 」? 假设我们的「特定环境 」如下: 技术层面 使用Java语言进行开发 通过Maven构建 基于Spring ...

  3. javascript模块化编程库require.js的用法

    随着javascript的兴起,越来越多的公司开始将JS模块化,以增加开发的效率和减少重复编写代码的.更是为了能更加容易的维护日后的代码,因为现在的随着人们对交互效果的越来越强烈的需求,我们的JS代码 ...

  4. mac 系统安装 eclipse 方法

    经过好几天的折腾,终于在各种不靠谱的经验.说明的忽悠中把自己心爱的 mac 安装上了 eclipse,看到别人的不靠谱,我决定自己写一篇经验,为了大家能够不走我这么多的弯路,也为了自己将来可以回来看看 ...

  5. javascript获取网页地址栏的id

    //获取网页的uid (function ($) { $.getUrlParam = function (name) { var reg = new RegExp("(^|&)&qu ...

  6. Windows2003查看远程桌面连接的用户

    要查看通过远程连接windows2003的用户,则打开任务管理器,切换到“用户”选项卡上进行查看.

  7. Flex读取txt文件中的内容报错

    Flex读取txt文件中的内容 1.具体错误如下 2.错误原因 读取文件不存在 var file:File = new File(File.applicationDirectory.nativePat ...

  8. VxWorks启动过程详解(上)

    vxworks有三种映像: VxWorks Image的文件类型有三种 Loadable Images:由Boot-ROM引导通过网口或串口下载到RAM ROM-based Images(压缩/没有压 ...

  9. Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定

    1.错误描述 Caused by:java.sql.SQLException:ORA-01008:并非所有变量都已绑定 2.错误原因 3.解决办法

  10. HTML5结合CSS的三种方法+结合JS的三种方法

    HTML5+CSS: HTML中应用CSS的三种方法 一.内联 内联样式通过style属性直接套进HTML中去. 示例代码 <pstylepstyle="color:red" ...