`
caiwb1990
  • 浏览: 308126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis基础数据结构_string

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



字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体使用 JSON 序列化成字符串,然后将序列化后的字符串塞进 Redis 来缓存。同样,取用户信息会经过一次反序列化的过程。




Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,如图中所示,内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度 len。当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M


键值对
> set name hellc
OK
> get name
"hellc"
> exists name
(integer) 1
> del name
(integer) 1
> get name
(nil)


批量键值对

可以批量对多个字符串进行读写,节省网络耗时开销。

> set name1 hellc
OK
> set name2 hellc1
OK
> mget name1 name2 name3 # 返回一个列表
1) "hellc"
2) "hellc1"
3) (nil)
> mset name1 boy name2 girl name3 unknown
> mget name1 name2 name3
1) "boy"
2) "girl"
3) "unknown"


过期和 set 命令扩展

可以对 key 设置过期时间,到点自动删除,这个功能常用来控制缓存的失效时间。不过这个「自动删除」的机制是比较复杂的,如果你感兴趣,可以继续深入阅读第 26 节《朝生暮死——过期策略》

> set name hellc
> get name
"hellc"
> expire name 5  # 5s 后过期
...  # wait for 5s
> get name
(nil)

> setex name 5 hellc # 5s 后过期,等价于 set+expire
> get name
"hellc"
... # wait for 5s
> get name
(nil)

> setnx name hellc# 如果 name 不存在就执行 set 创建
(integer) 1
> get name
"hellc"
> setnx name hellc1
(integer) 0  # 因为 name 已经存在,所以 set 创建不成功
> get name
"hellc"  # 没有改变


计数
如果 value 值是一个整数,还可以对它进行自增操作。自增是有范围的,它的范围是 signed long 的最大最小值,超过了这个值,Redis 会报错。
> set age 30
OK
> incr age
(integer) 31
> incrby age 5
(integer) 36
> incrby age -5
(integer) 31
> set hellc 9223372036854775807  
OK
> incr hellc
(error) ERR increment or decrement would overflow


字符串是由多个字节组成,每个字节又是由 8 个 bit 组成,如此便可以将一个字符串看成很多 bit 的组合,这便是 bitmap「位图」数据结构,位图的具体使用会放到后面
  • 大小: 7.8 KB
  • 大小: 17.4 KB
分享到:
评论

相关推荐

    数据结构Redis中数据类型对应的数据结构.pdf

    数据结构 数据结构Redis中数据类型对应的数据结构 中数据类型对应的数据结构 Redis Redis 是⼀种键值(Key-Value)数据库。相对于关系型数据库(⽐如 MySQL),Redis 也被叫作⾮关系型数据库。 像 MySQL 这样的关系...

    Redis中最常用的String数据结构.docx

    不管你是否真的理解了,这个回答足以应付一半以上的面试官了,但是如果可以再进行补充就更好了:因为Redis对各种数据结构进行了精心的设计,比如String采用的是SDS,比如list采用的是ziplist,quicklist等等,可能...

    redis的五大数据结构.xmind

    redis内存缓存数据库五大数据结构: String ------> 字符串  Hash ------> 哈希  List ------> 列表  set ------> 集合  Zset ------> 有序集合

    Redis_Window

    Redis是一个开源的试用ANSI ...2、redis不仅支持简单的key-value类型的数据,同时还支持list、set、zset、hash等数据结构的存储。 3、redis支持数据的备份,即master-slave模式的数据备份。 Redis Window下的安装

    Redis之基本数据结构

    相当于LinkedList队列-右边进左边出栈-右边进右边出ltrim截取hash字典-相当于hashmapset集合-相当于hashSetzset有序集合-相当于sortedSet容器型数据结构通用规则 如果不能深入地了解系统,技术和框架背后的深层原理...

    Redis中的String类型及使用Redis解决订单秒杀超卖问题

    Redis中5种数据结构之String类型:key-value的缓存,支持过期,value不超过512M。 Redis是单线程的,比如SetAll & AppendToValue & GetValues & GetAndSetValue & IncrementValue & IncrementValueBy等等,这些看...

    redis可视化工具、免费.中文

    Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 性能极高 – Redis能读的速度是110000次/s,写的速度是81000...

    Redis教程(内含各种数据结构详细的操作命令)

    1、redis概述和安装 1.1、安装redis 1.2、启动redis 1.3、关闭redis 1.4、进入redis命令窗口 1.5、redis命令大全 1.6、redis介绍相关知识 2、redis 5大数据类型 ...2.2.3、数据结构 2.3、redis列表(List)

    redis基础.doc

    set、zset 等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务, 流水线,等附加功能, 流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器, 并将被执行的多个命令请求的结果...

    redis面试题.txt

    - 字符串(String):最基本的数据结构,可以存储字符串、整数或浮点数。 - 哈希表(Hash):类似于字典,可以存储多个键值对。 - 列表(List):有序的字符串列表,可以进行插入、删除、修改等操作。 - 集合(Set)...

    Redis中5种数据结构的使用场景介绍

    主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String、Hash、List、Set、Sorted Set做了讲解,需要的朋友可以参考下

    详解redis数据结构之sds

    sds是Simple Dynamic String的缩写,译为简单动态字符串,redis使用该结构保存字符串,不同于c中的字符串,redis使用该结构来更方便的进行字符串的处理,需要的朋友可以参考下

    redis架构图

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,...区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    C# StackExchange.Redis 操作封装类库

    C# StackExchange.Redis 操作封装类库,分别封装了Redis五大数据结构(String,Hash,List,Set,ZSet)的增删改查的操作方法,支持Async异步操作。​支持Redis分库操作。支持信息队列操作。 带有单元测试,为每个...

    c#Redis封装类库操作.txt

    C# StackExchange.Redis 操作封装类库,包括Redis五大数据结构(String,Hash,List,Set,ZSet)的各种用法、单元测试实例。

    Redis面试题.pdf

    Redis通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、哈希(Map)、列表(list)、集合(sets)、有序集合(sorted sets)等类型。 Redis是一个key-value存储系统,它支持丰富的数据类型,这些数据类型...

    redisStudy.zip

    1.redis支持的数据结构 string list hash set zset(基本回答) 加分项:另外redis还对这几种数据结构做了扩展,如GEO对位置计算,hyperLogLog做统计,bitmaps:redis底层存储value值都是存储的二进制数据,redis...

    Redis总结.xmind

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key...它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    Redis 教程基本操作实战练习,狂神

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于...它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Global site tag (gtag.js) - Google Analytics