阅读目录

1.keys * 命令

首先我们需要使用set命令建立一个名为 key1 的键。如下命令:

redis> set key 1
ok

如下所示:

如上代码,当我们使用 keys * 命令就能获得Redis中所有的键了。但是当键的数量很多的话会稍微影响性能,不建议在生产环境中使用。

2.判断一个键是否存在(exists key)

使用语法如下:exists key

如果该键存在则返回整数类型1,否则返回0,如下所示:

3.删除键

可以删除一个或多个键,返回值是删除的键的个数,如下基本语法:

redis> del key

如下所示:

如上第二次执行del命令是,因为key键已经被第一次删除了,因此返回0.

4.获取键值的数据类型

基本语法如下:
type key

type命令用来获取键值的数据类型,返回值可能是string, hash(散列类型),list(列表类型),set(集合类型),zset(有序集合类型)。比如如下代码:

5 递增数字(incr)

使用命令如下:incr num

如下所示:

字符串类型可以存储任何形式的字符串。当存储的字符串是整数形式时,Redis提供了一个使用的命令 incr, 它的作用是让当前的键值递增,并且返回递增后的值。但是当键值不是整数时Redis会提示错误;如下所示:

我们可以使用该语法来实现文章访问量或点击量的统计功能。每次访问文章的时候我们可以使用incr命令使相应的键值递增即可。

6.增加指定的整数 (INCRBY)

使用命令如下:INCRBY key increment

用法如下:

7.减少指定的整数 (DECRBY)

DECR keyDECRBY key decrement

DECR命令和INCR命令相同,是让键值递减。比如如下:

DECRBY命令的作用是递减多少,比如 DECRBY key 5 就相当于 INCRBY key - 5; 如下所示:

8.增加指定的浮点数(INCRBYFLOAT)

基本语法如下:INCRBYFLOAT key increment

9.向尾部追加值(APPEND)

基本语法:APPEND key value

APPEND的作用是向键值的末尾追加value。如果该键不存在则将该键的值设置为value,也就是相当于 SET key value. 返回值是追加后字符串的总长度,比如如下所示:

10.获取字符串的长度(STRLEN)

基本语法如下:STRLEN key

STRLEN 命令返回键值的长度,如果该键不存在的话则返回0,比如如下:

字符串类型可以存储2进制数据的,因此字符串可以存储任何编码的字符串。如果Redis接收到的是使用UTF-8编码的中文的话,那么一个中文的长度是3,因此 "我是空智" 的长度就是12了。

11.同时获得/设置多个键值 (MSET)

使用基本语法如下:MSET key value [key value ....]

比如如下所示:

获取多个值当然就是 MGET 了。

12.位操作

我们都知道一个字节是由8个二进制位组成的。Redis提供了4个命令可以直接对二进制位进行操作。

1. GETBIT key offset

该命令是可以获得一个字符串类型键指定位置的二进制位的值(0或1)。它的索引值是从0开始的。

比如我设置 key 值为 'bar';

127.0.0.1:6379> set key bar
OK

bar 的3个字母 'b', 'a', 'r'对应的ASCII码分别为98、97和114. 那么转换成二进制就变成了 01100010、01100001、和 01110010 这样的。

如下图所示演示:

如上图 GETBIT key 0; 值就是 二进制中的第一位,因此值就是0. GETBIT key 6 的值就是二进制中的第七位,所以为1(因为索引值是从0开始的)。

但是如果需要获取的二进制位的索引值超过了键值的二进制位的实际长度,那么它的默认值就是0了,如下图所示:

2. SETBIT key offset value

SETBIT命令可以设置字符串类型键指定位置的二进制位的值,返回值是该位置的原来的值。比如我现在将key设置为字符串 "bar", 那么它的ASCII编码就是 98 97 114了,那么对应的二进制就是:01100010、01100001、01110010 这样的。

然后我们现在使用位操作符将它的索引第6位设置为0,第七位设置为1. 如下所示:

如上我们将它的第六位设置为0,它返回了1,因为6是原来值的第七位(索引值从0开始的)。然后把它的第七位设置1,索引在二进制为上它就是第八位。因此返回0. 最后它的值就是 011000001 、011000001、01110010 这样的. 因此ASCII编码就是 99,97,114 这样的了,因此使用 get key 获取到的字符串就是 aar了。

3. BITCOUNT key [start] [end]
该命令作用是可以获得字符串类型键中值是1的二进制位个数。比如如下:

如上bar的二进制是:01100010、01100001、01110010 这样的。因此使用 BITCOUNT key; 返回的是字符串类型键值是1的二进制为个数就是10了。

我们可以通过参数来限制统计的字节范围,比如我们希望统计前两个字节,如下命令:

redit> BITCOUNT bar 0 1

如上 是从0开始,1结束的字节,也就是 01100010、01100001 这个中的多少个1,因此返回6.

4. BITOP operation destkey key [key ...]

BITOP命令可以对多个字符串类型键进行位运算、并且会将结果存储到destkey参数指定的键中。BITOP命令支持运算操作有AND、OR、XOR、和 NOT. 我们下面对 bar 和 aar 进行 OR运算。如下代码:

如上分析:bar 的ASCII编码是 98、97、114 因此二进制位就是:01100010、01100001、01110010, 而 aar 的二进制位就是01100001、01100001、01110010。 因此 他们进行 OR 运算就变成了 01100011 01100001 01110010. 因此他们的ASCII编码就是 99、97、114 也就是字符串 car 了。

Redis入门---字符串类型的更多相关文章

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

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

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

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

  3. Redis自学笔记:3.2入门-字符串类型

    3.2字符串类型 实际上redis不只是数据库,更多的公司和团队将redis用作缓存和 队列系统 3.2.1介绍 字符串类型是redis最基本的数据类型,它能存储任何形式的字符串, 包括二进制数据.你 ...

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

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

  5. Redis之字符串类型命令

    String(字符串) string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value. string 类型是二进制安全的.意思是 ...

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

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

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

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

  8. Redis入门教程(二)

    推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...

  9. Redis中String类型的Value最大可以容纳数据长度

    项目中使用redis存储,key-value方式,在Redis中字符串类型的Value最多可以容纳的数据长度是512M 官方信息: A String value can be at max 512 M ...

随机推荐

  1. Spring Cloud学习笔记-010

    分布式配置中心:Spring Cloud Config Spring Cloud Config是Spring Cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外 ...

  2. 【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇

    转自:http://www.cnblogs.com/essenroc/p/8627775.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付 ...

  3. 谈谈iOS获取调用链

    本文由云+社区发表 iOS开发过程中难免会遇到卡顿等性能问题或者死锁之类的问题,此时如果有调用堆栈将对解决问题很有帮助.那么在应用中如何来实时获取函数的调用堆栈呢?本文参考了网上的一些博文,讲述了使用 ...

  4. Docker最全教程——从理论到实战(七)

    在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...

  5. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(1)- 环境搭建(Python2.7.14 + PyAudio0.2.11 + Matplotlib2.2.3 + SpeechRecognition3.8.1 + pyttsx3 2.7)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之环境搭建. 在写Jays-PySPEECH时需要先搭好开发环境,下表列出了开发过程中会用到的 ...

  6. C#简单委托示例——让你一看就会的demo

    委托 1. 什么是委托? 委托就是具有相同签名和返回值类型的有序方法列表 它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递 是一种引用类型 方法的列表称为调用列表 当委托被调用时,它调 ...

  7. 第58章 Profile Service - Identity Server 4 中文文档(v1.0.0)

    IdentityServer通常在创建令牌或处理对userinfo或内省端点的请求时需要有关用户的身份信息.默认情况下,IdentityServer仅具有身份验证cookie中的声明,以便为此身份数据 ...

  8. python之字符串反转

    def main(): a = "abcdefg" a = a[::-1] print(a) if __name__ == '__main__': main()

  9. Java开发笔记(二十四)方法的组成形式

    经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...

  10. git 常用命令,上传,下载,更新线上代码

    git 常用命令以及推荐git新建上传个人博客 $ git clone  //本地如果无远程代码,先做这步,不然就忽略 $ git status //查看本地自己修改了多少文件 $ git add . ...