快捷搜索:

redis操作学习记录

redis操作学习记录

  虽然有参考文档,而且记忆太多也是耗脑,但学习的时候还是想要有个系统划分开知识点的文档,即使不要求去细致记忆,但划分开知识块后脑子里的印象才会更清晰,所以就有了这个博文。

  Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用

  Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted

  :如果设置了密码,但连接的时候没有使用-a password,那么可以在连接完成后使用auth password来解锁,解锁之后才能使用其他 Redis 命令

  使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。如果设置了message,那么返回值为message。

  :切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。可以从标识看出当前是哪个数据库。

  snapshot快照持久化:保存的是所有数据,默认情况下,自动执行快照持久化,保存文件为.rbd

  使用save:SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。

  如何恢复数据: 使用snapshot方式保存会有一个.rbd文件(config get dbfilename可获知是哪个文件),保存完毕后将这个文件复制到外面一份asp技术,当需要恢复的时候,关闭redis服务,将.rbd复制回来覆盖,重启redis服务即可

  如何恢复:与rdb恢复数据方式相同,会有一个.aof文件(config get appendfilename可获知是哪个文件,如果不行就看配置文件),保存完毕后将这个文件复制到外面一份,当需要恢复的时候,关闭redis服务,将.aof复制回来覆盖,重启redis服务即可

  如果rdb文件,和aof文件都存在,优先用“AOF来恢复数据【这个要谨慎使用,有可能因为这个而发生”删库“】

  获取客户端名称:CLIENT GETNAME 【返回 CLIENT SETNAME 命令为连接设置的名字。创建的连接默认是没有名字的】

  获取客户端连接信息:CLIENT LIST 【返回所有连接到服务器的客户端信息和统计数据。】

  获取时间:time 【返回当前服务器时间。第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。】

  set key value [EX seconds] [PX milliseconds] [NX

  如果 key 已经存在并且是一个字符串, append命令将 value 追加到 key 原来的值的末尾。

  如果 key 不存在, append就简单地将给定 key 设为 value ,就像执行 SET key value 一样

  当字符串为数字时,将 key 中储存的数字值减一,其余时报错。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。

  与decr key不同的是指定减少数量为decrement。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decrby 操作。

  :当字符串为数字时,将 key 中储存的数字值增一,其余时报错。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr操作。

  :当字符串为数字时,将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行incrby 命令。

  当 bitop 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。空的 key 也被看作是包含 0 的字符串序列

  m前缀的操作是具有原子性的,只有一个失败就报错,比如mset设置多个值,只要一个设置失败,那么就会报错,并全部设置失败。

  并且redis是有数据类型的,操作会检测数据类型,除去一些能“覆盖”原变量,忽略原变量类型的操作,其他操作遇到不符合的类型都会报错

  redis中的hash相当于key只是一个索引值,指向一个哈希表,它的值是一个域值对(field-value)区域

  将哈希表 key 中的域 field 的值设为 value 。如果 key 不存在,一个新的哈希表被创建并进行hset操作。如果域 field 已经存在于哈希表中,旧值将被覆盖。

  hscan key cursor [MATCH pattern] [COUNT count]:

  cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕

  如果哈希表中对应的field为数字,那么为哈希表 key 中的域 field 的值加上增量 increment 。如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。【注,increment可以为负数,所以没有hdecr】

  如果哈希表中对应的field为数字,那么为哈希表 key 中的域 field 的值加上浮点数增量 increment 。如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0

  多个值插入时,后面插入的值在表头,也就是说会从左边把一个个值往右边压,最后面的值作为表头。

  当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。

  当 pivot 不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。

  是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止(可以使用另外一个客户端来添加元素)。

  当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。

  是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止(可以使用另外一个客户端来添加元素)。

  当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾元素。

  如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元

  如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度

  redis是有数据类型的,操作会检测数据类型,除去一些能“覆盖”原变量,忽略原变量类型的操作,其他操作遇到不符合的类型都会报错

  返回或保存给定列表、集合、有序集合 key 中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。

  EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

  将 key 改名为 newkey 。当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。当 newkey 已经存在时, RENAME 命令将覆盖旧值。

  当且仅当 newkey 不存在时,将 key 改名为 newkey 。当 key 不存在时,返回一个错误。

  序列化给定 key ,并返回被序列化的值,使用 restore 命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和。值的编码格式和 RDB 文件保持一致。RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么Redis 会拒绝对这个值进行反序列化操作。序列化的值不包括任何生存时间信息。

  反序列化给定的序列化值,并将它和给定的 key 关联。参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间。RESTORE 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 RESTORE 会拒绝进行反序列化,并返回一个错误。如果键 key 已经存在, 并且给定了 REPLACE 选项, 那么使用反序列化得出的值来代替键 key 原有的值; 相反地, 如果键 key 已经存在, 但是没有给定 REPLACE 选项, 那么命令返回一个错误。

  migrate host port key destination-db timeout [COPY] [REPLACE]:

  将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。这个命令是一个原子操作,它在执行的时候会阻塞进行迁移的两个实例,直到以下任意结果发生:迁移成功,迁移失败,等到超时。

  将当前数据库的 key 移动到给定的数据库 db 当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果

  pubsub channels [pattern]:列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。

  可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言。Hello, Lua!我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义...查看详情

  从mysql搬一个大表到redis中,你会发现在提取、转换或是载入一行数据时,速度慢的让你难以忍受。这里我就要告诉一个让你解脱的小技巧。使用“管道输出”的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过“中间件”的方式使两者在进行数据操作时达到最佳...查看详情

  概述装了redis有一段时间了,每次运行的时候都需要手动在命令行里启动redis,而且窗口不能关闭,感觉很麻烦,所以就想把redis设置为开机启动。由于google打不开(伟大的GFW啊),所以百度了几篇文章,照着教程一步一步做还是没有成功,怪自己太笨了。这两天自己搭建了一个VP...查看详情

  本文介绍redis排序命令redis支持对list,set,sorted set元素的排序sort 排序命令格式: sort key [BY pattern] [LIMIT start count] [GET pattern] [ASCDESC] [ALPHA] [STORE ...查看详情

  Redis中双链表实现的基本结构:1.节点结构typedef struct listNode { struct listNode *prev; //前向节点 struct listNode *next; //后向节点 void *value; //该节点的值} ...查看详情

  sds 的用途Sds 在 Redis 中的主要作用有以下两个:实现字符串对象(StringObject);在 Redis 程序内部用作 char* 类型的替代品;以下两个小节分别对这两种用途进行介绍。实现字符串对象Redis 是一个键值对数据库(key-value DB), 数据...查看详情

  这篇文章主要介绍了利用Redis实现SQL伸缩的方法,包括讲到了锁和时间序列等方面来提升传统数据库的性能,需要的朋友可以参考下。缓解行竞争我们在Sentry开发的早起采用的是sentry.buffers。 这是一个简单的系统,它允许我们以简单的Last Write Wins策略来...查看详情

  Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add...查看详情

  下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率。1.在主页中显示最新的项目列表Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需...查看详情

  关注关系产生的四种关系状态 关注 粉丝 双向关注(互粉) 无关系需求分析在微博中,每一个用户都会有一个关注列表,一个粉丝列表。用户可以查看自己的关注,粉丝列表,也可以查看别人的关注,粉丝列表。并且,要展示列表里每个人与当前查看者的关注状态。状态的可能性就是上面讲到得四种关...查看详情js在线加密解密工具

您可能还会对下面的文章感兴趣: