Redis的5种数据结构:string、list、hash、set和zset;

Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。

基本操作

1、string表示的是一个可变的字节数组;

2、Redis的字符串时动态字符串,是可以修改的;

3、内部结构实现上类似与Java的ArrayList,用预分配冗余空间的方式来减少内存的频繁分配;

4、字符串长度小于1M时,扩容都是加倍现有的空间;

5、长度大于1M时,扩容时指挥多扩1M的空间;

6、字符串最大长度为512M;

7、字符串没有提供子串插入和子串删除方法;

# 初始化字符串(set 键 值)
localhost:0>set muscleape com.muscleape.www
"OK"
# 获取字符串内容(get 键)
localhost:0>get muscleape
"com.muscleape.www"
# 获取字符串的长度(strlen 键)
localhost:0>strlen muscleape
"17"
# 获取子串(getrange 键 开始下标 结束下标)
localhost:0>getrange muscleape 4 12
"muscleape"
# 覆盖子串(setrange 键 开始位置 替换串)
localhost:0>setrange muscleape 4 wzqwzqwzq
"17"
localhost:0>get muscleape
"com.wzqwzqwzq.www"
# 追加子串(append 键 子串)
localhost:0>append muscleape .wzq
"21"
localhost:0>get muscleape
"com.wzqwzqwzq.www.wzq"

计数器

1、如果字符串的内容是一个整数,可以将字符串当做计数器来使用;

# 初始化
localhost:0>set muscleape 59
"OK"
# 获取值
localhost:0>get muscleape
"59"
# 增加(incrby 键 增加数值)
localhost:0>incrby muscleape 200
"259"
# 获取值
localhost:0>get muscleape
"259"
# 减少(decrby 键 减少数值)
localhost:0>decrby muscleape 200
"59"
# 获取值
localhost:0>get muscleape
"59"
# 增加1(incr 键)=> 等价于 => incrby 键 1
localhost:0>incr muscleape
"60"
# 减小1(decr 键)=> 等价于 => decrby 键 1
localhost:0>decr muscleape
"59"

2、计数器是有范围的,不能超过Long.Max,不能低于Long.MIN

localhost:0>set muscleape 9223372036854775807
"OK"
localhost:0>incr muscleape
"ERR increment or decrement would overflow"
# #####################################
localhost:0>set muscleape -9223372036854775808
"OK"
localhost:0>decr muscleape
"ERR increment or decrement would overflow"

删除和过期

字符串可以使用del指令进行主动删除,可以使用expire指令设置过期时间,到点会自动删除,这属于被动删除。可以使用ttl指令获取字符串的寿命;

# 设置过期时间(expire 键 有效秒数);1表示设置成功,0表示变量ireader不存在
localhost:0>expire muscleape 60
"1"
# 查询寿命(ttl 键); 还有55秒的寿命,返回-2表示变量不存在,-1表示没有设置过期时间
localhost:0>ttl muscleape
"55"
# 删除(del 键)删除成功返回1
localhost:0>del muscleape
"1"
localhost:0>get muscleape
null

Redis基本操作-string的更多相关文章

  1. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  2. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

  3. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  4. Redis基本操作-20150608

    Redis基本操作-20150608 [http://my.oschina.net/u/241255/blog/206991]   Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存 ...

  5. Redis 基本操作(一)

    redis和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes.lists. sets 和sorted sets等结构.正是这些灵活的数据结构 ...

  6. 【原】Redis基本操作

    Redis基本操作 遍历操作 Pub-Sub server Lua脚本 Redis中的这些操作都是不分大小写的. 除了针对于具体类型的具体操作.还有一些其他操作. 遍历操作 SCAN cursor [ ...

  7. Redis之String

    一.Redis之String简介 1. String是redis最基本的数据类型,一个key对应一个value. 2. String是二进制安全的,可以包含任何数据,例如图片或序列化的对象. 3. S ...

  8. redis对string进行的相关操作

    redis对string类型操作的相关命令以及如何在python使用这些命令 redis对string类型操作的命令: 命令 语法 概述 返回值 Redis SET 命令  set key value ...

  9. Redis操作string

    Redis简介: ''' redis: 缓存,例如两个个程序A,B之间要进行数据共享,A可以把数据存在redis(内存里),其他程序都可以访问redis里的数据, 这样通过中间商redis就实现了两个 ...

随机推荐

  1. streamsets k8s 部署试用

    使用k8s 进行 streamsets的部署(没有使用持久化存储) k8s deploy yaml 文件 deploy.yaml apiVersion: extensions/v1beta1 kind ...

  2. 系列文章--从零开始学习ASP.NET MVC 1.0

    从零开始学习ASP.NET MVC 1.0 (一) 开天辟地入门篇 从零开始学习 ASP.NET MVC 1.0 (二) 识别URL的Routing组件 从零开始学习 ASP.NET MVC 1.0 ...

  3. Oracle 11gR2 RAC 新特性说明

    最近接触了一下Oracle 11g R2 的RAC,发现变化很大. 所以在自己动手做实验之前还是先研究下它的新特性比较好. 一.    官网介绍 先看一下Oracle 的官网文档里对RAC 新特性的一 ...

  4. 管理node.js版本的模块:n

    n模块的使用: 命令 作用 yarn global add n 全局安装n n stable 升级node.js到最新稳定版 n v0.10.26 或 n 0.10.26 升级到指定版本号

  5. JUC线程池之 线程池的5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED

    线程池有5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED. 线程池状态定义代码如下: private final AtomicInteger ctl ...

  6. 二、Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错

    两个报错:Could not create script recorder报错和您的连接不是私密连接报错 1.录制过程 * 打开jmeter * 点击Templated,选择Recoding模版 * ...

  7. jmeter ---模拟http请求/发送gzip数据

    jmeter中get请求gzip数据的方法: 在jmeter线程组中添加“http信息头管理器”,并添加名称:Accept-Encoding值: gzip,deflate注:HTTP信息头Accept ...

  8. HighCharts定时刷新图表

    假设图表容器的id为exChart,如下: <div style="height:450px;" id="chart">   1. 首先在serie ...

  9. JavaScript中的继承模式总结(九)

    一.总结: //js中的几种继承 //原型链的问题,包含引用类型的原型属性会被实例共享,子类型无法给超类型传递参数 function SuperType() { this.colors = [&quo ...

  10. 6.后台验证码-session作用域

    首先要有生成验证码图片和验证码文字的逻辑 package cn.bingou.util; import java.awt.Color; import java.awt.Font; import jav ...