一、redis的数据存储格式

  • redis本身是一个Map,其中所有的数据都是采用 ”key:value“的方式进行存储的。
  • 我们说的数据类型是数据存储的类型,也就是对应下图的value,key部分永远是字符串

 二、string类型

2.1 基本说明

  • 存储的是单个数据,是最简单的数据存储类型
  • 存储数据的格式:一个空间存储一个数据
  • 保存内容:通常使用字符串,如果字符串的内容是纯数字,可以当数字用,但本质还是一个字符串

2.2 基本操作

功能 命令 说明
添加/修改数据 set key value 如果set已经有的key会覆盖之前的值
获取数据  get key 获取不存在的key返回null
删除数据 del key 删除一个存在的key返回1,删除成功;删除一个不存在的key返回0,删除失败
添加/修改多个数据 mset key1 value1 key2 value2 ...  
获取多个数据 mget key1 key2  
获取数据字符个数(字符串长度) strlen key  
追加信息到原始信息内部 append key value 如果原始信息存在就追加,否则就创建;返回的是value对应的长度

对于单数据操作和多数据操作的选择问题:

先来想一下,一条指令的执行过程,指令要发送给服务器,服务器处理之后,还要返回给客户端,这里可以看作是三个处理时间;假如是三条或者更多指令呢?至少一次回一个数据结果比回100个数据结果还是有差别的。当然并不是绝对要用哪一个,数据量小其实差别不大,如果数据量又足够特别大,最好还是要找到一个合适点进行数据切割再执行,毕竟之前就提及到redis的单线程工作,不能阻塞到那里。

2.3 扩展操作

(1)场景一:分库分表的主键唯一ID,我们不能每个表控制自己的主键ID,怎么办呢?

解决方案:

  • 设置数值数据增加指定范围的值
功能 命令 其他说明
对数值增 incr key 一次增1
指定增加数值 incrby key increment  
可以增加小数 incrbyfloat key increment  
  • 设置数值数据减少指定范围的值
功能 命令 其他说明
对数值进行减操作 decr key 一次减少1
指定减少数值 decrby key increment  

说明:

  • string在redis内部默认就是一个字符串,当遇到增减类操作的时候,会转换为数值进行运算;
  • redis的操作都是原子性的,采用单线程处理;
  • 按数值进行操作的数据,如果原始数据不能转换为数值,或者超过redis的数值上限范围,将报错。最大值:Long.MAX_VALUE

(2)场景二:微信投票,1小时候至多投一次;或者电商中每种商品3天热门,3天后下架;热点新闻等

解决:

  • 设置数据具有指定的生命周期
功能 命令 其他说明
设置指定key存活时间 set key seconds value 单位秒
设置指定key存活时间 psetex key milliseconds value 单位毫秒

(3)场景3:新浪微博存储某个明星的粉丝数和微博数,这里用string怎么存呢?

解决:

  • set user:id:012345:fans  123456789            set user:id:012345:blogs  6790
  • 采用json的方式:set user:id:012345  {id:012345, blogs:6790, fans:123456789}
  • 扩展:当然也有可能你会想到hash,本节不做讨论,下一节描述

2.4 redis key的命名规范

表名:主键名:主键ID:字段名  

2.5 对于string操作的小结

  • 对于数据操作成功失败的差异,表示运行结果是否成功,0代表失败或者false,1代表成功或者true
  • 数据未获取到,返回nil,等同于null
  • 数据最大存储量:512MB
  • 数值计算存在最大范围:Long.MAX_VALUE

这一篇就到这里,下一篇写redis数据类型之hash。

专题二:redis的数据类型之string的更多相关文章

  1. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  2. redis 五大数据类型之string篇

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

  3. Redis基本数据类型以及String(一)

    前言:     Redis也有自己的数据类型,包含string,list,hash,set,sorted set.下面就对每种数据类型原理以及操作做一个详细的介绍.     Redis是面向编程的语言 ...

  4. Redis的数据类型之String

    Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和 Sorted Set. Redis数据类型String string类型在redis中是最常见的类型,valu ...

  5. redis 基本数据类型-字符串(String)

    不瘦原来对redis也是有个大概的了解(就你知道的多), 但是最近和大神聊天的过程中才明白自己知道的简直就是鸡毛蒜皮(让你得瑟),所以不瘦打算从头在捋一遍,顺便把过程也记录下来,如果能给大家在学习re ...

  6. redis(二)-----redis基本数据类型之字符串

    Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串.哈希.列表.集合.有序集合,同时在字符串的基础之上演变 出了位图(Bitmaps)和HyperLo ...

  7. Redis常用数据类型及各种数据类型应用和实现方式

    Redis常用数据类型: StringHashListSetSorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Red ...

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

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

  9. redis基本数据类型和对应的底层数据结构

    Redis的数据类型包含string,list,hash,set,sorted set. Redis中定义了一个对象的结构体: /* * Redis 对象 */ typedef struct redi ...

随机推荐

  1. 动态生成简约MVC请求接口|抛弃一切注解减少重复劳动吧

    背景 目前创建一个后端请求接口给别人提供服务,无论是使用SpringMVC方式注解,还是使用SpringCloud的Feign注解,都是需要填写好@RequestMap.@Controller.@Pa ...

  2. 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现

    CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...

  3. Java知识系统回顾整理01基础05控制流程07结束外部循环

    一.break是结束当前循环 二.结束当前循环实例 break; 只能结束当前循环 public class HelloWorld { public static void main(String[] ...

  4. 头文件afx.h作用

    转载:https://blog.csdn.net/OnceMonkeyG/article/details/95723290 一些定义与设置,为MFC提供最基本支持,将各种松散的东西组织起来,同时为MF ...

  5. matlab中datest() 将日期和时间转换为字符串格式

    来源:https://ww2.mathworks.cn/help/matlab/ref/datestr.html?searchHighlight=datestr&s_tid=doc_srcht ...

  6. 【题解】hdu4757 【TJOI2018】异或

    题目链接 题目大意:有一颗树,有点权,每次询问:一条路径\(x->y\)中与\(z\)异或的最大值,或是以\(x\)为根的子树中与\(y\)异或的最大值. 树剖--还是算了. 观察到,子树的\( ...

  7. Androng,一个针对Android的Pong克隆

    下载application from Android market 下载source - 532 KB 内容 IntroductionAndroid游戏开发 活动视图绘图使用CanvasAnimati ...

  8. CentOS Linux 修改主机名

    一.CentOS5 修改主机名 二.CentOS6 修改主机名 三.CentOS7 修改主机名 静态的(Static hostname)        "静态"主机名也称为内核主机 ...

  9. Eating Peach (peach)

    Description On this day, the little monkey went looking for food. He came to a rectangular peach gar ...

  10. Vue学习 一 环境搭建

    Vue  ui  启动 创建一个新项目 包管理器 npm Bable 转换js 至低版本的支持(兼容低版本) TypeScript  对TypeScript  的支持  (暂时不需要) PWA    ...