三、常用命令

  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. Python基础——for/while循环

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 上学期间,常常遇到这样的情景:为了惩罚学生,老师会说:"XXX,你先去操场上跑10圈再回来继续反省.&qu ...

  2. PHP中单引号与双引号的区别

    在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析. PHP允许我们在双引号串中直接包含 ...

  3. struts2标签库----数据标签详解

    上篇文章我们介绍struts2标签库中的控制标签的基本使用和部分原理,本篇文章接着了解下标签库中有关数据标签的使用和原理.主要涉及以下数据标签: action标签:用于在视图页面跳转到一个Action ...

  4. SSH服务端配置、优化加速、安全防护

    CentOS7自带的SSH服务是OpenSSH中的一个独立守护进程SSHD.由于使用telnet在网络中是明文传输所以用其管理服务器是非常不安全的不安全,SSH协议族可以用来对服务器的管理以及在计算机 ...

  5. 关于VS2013调试IIS应用源代码时无法进入断点的问题总结

    调试无法进入断点 前言:今天再次遇到之前调试无法进入断点的问题,本来想不写呢觉得没什么只是又犯了同样的错误,但是我发现这个问题我分析起来还是挺费劲的,我仔细想了想原因, 是因为自己对之前的错误没有进行 ...

  6. apache配置,禁止ip访问web站点

    由于一台服务器上面部署了好几个应用,对应不同的域名,如果用户知道ip地址的话,直接用户ip地址访问,会显示第一个虚拟主机的页面(更改了虚拟主机的顺序,每次都是显示第一个).这样对用户造成不好的印象,所 ...

  7. 【linux】linux下能ping通ip 但是不能ping通域名

    经过一翻查找后解决了,原因和方法如下: [root@~]# grep host /etc/nsswitch.conf#hosts: db files nisplus nis dnshosts:     ...

  8. document.forms[].submit()

    document.forms['exportServlet'].submit(); (1)document.forms:表示获取当前页面的所有表单 (2)document.forms[0]:表示获取当 ...

  9. Java中的i++和i--

    /** * @Title:DataCate.java * @Package:com.you.dao * @Description:数据类型转换 * @Author: 游海东 * @date: 2014 ...

  10. Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...