三、常用命令

  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. Egret学习笔记.2 (Egret开发环境)

    配置Egret的开发环境是很简单的,去https://www.egret.com/products/engine.html下载 然后基本就是下一步下一步,安装好了就好了,装好了选择Wing组件,然后下 ...

  2. 剑指offer第三天

    21.栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3, ...

  3. SharedPreferences封装类

    最近一直在读马伟奇老师的简书,给人以不一样的感觉,接下来的时间会做做笔记,毕竟好东西变成自己的才有用 原文地址SharedPreferencesUtils 依赖 dependencies { comp ...

  4. 浏览器的 bfcache 特性

    一.bfcache 基本概念 现代浏览器在根据历史记录进行前进/后退操作时,会启用缓存机制,名为"bfcache"(back-forward cache,往返缓存),它使页面导航非 ...

  5. VNCServer,SSH Secure Shell Client,window远程控制linux

    1.VNC远程连接linux图形化桌面 2.SSH Secure Shell Client连接linux终端 3.设置FTP与linux传输文件 1.VNC远程连接linux图形化桌面 在centos ...

  6. php 变量原理讲解

    php 变量原理讲解 一.变量概念   所谓变量,是指在程序中其值可以变化的量. 程序是管理和处理数据的.在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的. 变量通常由 ...

  7. linux nginx常见问题及优化,压力测试,tomcat服务器优化

    nginx常见问题 nginx优化全局配置优化[root@web2 nginx]# vim conf/nginx.confuser nobody;worker_processes 1;(与cpu核心数 ...

  8. Linux基础四

    vim编辑器 vi编辑器的增强版,语法高亮等扩展功能 vim三种工作模式  a,i,o等键输出模式 命令模式,输入模式,末行模式 模式间的切换 a:当前行插入 i:当前行插入 o:全新一行插入 :键末 ...

  9. 深入理解StrongReference,SoftReference, WeakReference和PhantomReference

    Java 中一共有 4 种类型的引用 : StrongReference. SoftReference. WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵) ...

  10. VBR与CBR的区别是什么?

    VBR是动态码率.CBR是静态码率. VBR(Variable Bitrate)动态比特率.也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方 ...