一、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. python3-day4

    一.列表生成式,迭代器和生成器 1)列表生成式 把列表  [0,1,2,3,4,5,6,7,8,9]里的每个值添加1 1 >>>a = [0,1,2,3,4,5,6,7,8,9] 2 ...

  2. Spring学习(四)--Spring的IOC

    1.BeaDefinition的Resource定位 (1)直接使用BeanDefinitionFactory 定义一个Resource来定位容器使用的BeanDefinition. Resource ...

  3. 音频数据增强及python实现

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/13404523.html 音频时域波形具有以下特征:音调,响度,质量.我们在进行数据增强时,最好只 ...

  4. P1000 超级玛丽游戏

    P1000 超级玛丽游戏 https://www.luogu.com.cn/problem/P1000 这就很简单了代码: #include <iostream> #include < ...

  5. go分库分表 主从分离例子

    网上有很多介绍分库分表的文章,方法很多: 分区表切分 垂直切分 水平切分 区间切分 取模切分 这里不细说 分库分表简单,但后期会带来一系列的难题: 事务 Join 分页 数据库: master和sla ...

  6. 阅读源码,从ArrayList开始

    前言 为啥要阅读源码?一句话,为了写出更好的程序. 一方面,只有了解了代码的执行过程,我们才能更好的使用别人提供的工具和框架,写出高效的程序.另一方面,一些经典的代码背后蕴藏的思想和技巧很值得学习,通 ...

  7. 极客 Play 玩 Terminal——GitHub 热点速览 Vol.40

    作者:HelloGitHub-小鱼干 多少人以为暗黑的终端便是一名程序员的工作台,其实上,终端可以不只是一个输入 command 的界面,也可以是本周特推 kb 一样,面向极客的极简命令行知识库管理器 ...

  8. SCOI 2008 【奖励关】

    早上的考试一道都做不出,被教做人,心态爆炸ing...... 题目描述: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必 ...

  9. MySQL基础 :基本知识点大纲

  10. Prometheus第一篇:Prometheus架构解析

    Prometheus是新一代的监控系统解决方案,原生支持云环境,和kubernetes无缝对接,的却是容器化监控解决方案的不二之选.当然对传统的监控方案也能够兼容,通过自定义或是用开源社区提供的各种e ...