`

Redis支持的存储结构

 
阅读更多

存储结构

       redis支持的数据类型包括字符串、散列表、列表、集合、有序集合五种类型。

 

1、字符串:是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。一个字符串类型键允许存储的数据最大容量为512MB。

常用的命令:

   1).set/get:

 

127.0.0.1:6379[2]> set key hello
OK
127.0.0.1:6379[2]> get key
"hello"
127.0.0.1:6379[2]> set key "hello world"
OK
127.0.0.1:6379[2]> get key
"hello world"
127.0.0.1:6379[2]>

 注:如果字符串之间有空格,需要用双引号引起。

 

   2).append(在字符串的尾部追加字符串)

127.0.0.1:6379[2]> set key hello
OK
127.0.0.1:6379[2]> append key " world"
(integer) 11
127.0.0.1:6379[2]> get key
"hello world"
127.0.0.1:6379[2]>

 

   3).strlen key(获取键值的长度)   

127.0.0.1:6379[2]> get key
"hello world"
127.0.0.1:6379[2]> strlen key
(integer) 11
127.0.0.1:6379[2]>

 

   4).同时获得/设置多个键值 

127.0.0.1:6379[2]> mset key1 "hello" key2 "world" key3 "china"
OK
127.0.0.1:6379[2]> mget key1 key2 key3
1) "hello"
2) "world"
3) "china"
127.0.0.1:6379[2]>

 

2、散列类型:Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段和字段值的映射。但字段值只能是字符串,不支持其它数据类型,即不能嵌套其它数据类型。

常用的命令:

1)赋值/取值(hset/hget、hmset/hmget、hgetall)

127.0.0.1:6379[2]> hset person name lisi
(integer) 1
127.0.0.1:6379[2]> hget person name
"lisi"

 

127.0.0.1:6379[2]> hmset person name lisi sex man birthday 2001-09-26
OK
127.0.0.1:6379[2]> hmget person name sex birthday
1) "lisi"
2) "man"
3) "2001-09-26"
127.0.0.1:6379[2]> hgetall person
1) "name"
2) "lisi"
3) "sex"
4) "man"
5) "birthday"
6) "2001-09-26"
127.0.0.1:6379[2]>

 

 2).判断字段是否存在

127.0.0.1:6379[2]> hexists person address
(integer) 0
127.0.0.1:6379[2]> hexists person sex
(integer) 1
127.0.0.1:6379[2]>

 3).判断当字段不存在时赋值,否则不做处理(hsetnx).

127.0.0.1:6379[2]> hexists person address
(integer) 0
127.0.0.1:6379[2]> hexists person sex
(integer) 1
127.0.0.1:6379[2]> hsetnx person address "北京市"
(integer) 1
127.0.0.1:6379[2]> hexists person address
(integer) 1
127.0.0.1:6379[2]>

 

3、列表类型:可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获得列表的某一个片段。列表类型内部是使用双向链表实现的。

常用的命令:

1).获取/增加元素(lpop/lpush)

127.0.0.1:6379[2]> lpush lkey 1
(integer) 1
127.0.0.1:6379[2]> lpop lkey
"1"
127.0.0.1:6379[2]>

 2).一次设置多个元素(lpush key value1 valu2....)、获取指定key的指定范围的元素值(lrange key start end).

127.0.0.1:6379[2]> lpush lkey 1 2 3 4 5
(integer) 5
127.0.0.1:6379[2]> lrange lkey 0 3
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379[2]>

 3).获取/设置指定索引的元素值(lindex/lset).

127.0.0.1:6379[2]> lpush lkey1 1 2 3 4 5
(integer) 5
127.0.0.1:6379[2]> lrange lkey1 0 4
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379[2]> lindex lkey1 5
(nil)
127.0.0.1:6379[2]> lindex lkey1 4
"1"
127.0.0.1:6379[2]> lset lkey1 4 0
OK
127.0.0.1:6379[2]> lindex lkey1 4
"0"
127.0.0.1:6379[2]>

 

 4).向列表中插入元素(linsert key before|after pivot value).

127.0.0.1:6379[2]> linsert lkey1 after 5 6
(integer) 6
127.0.0.1:6379[2]> lrange lkey1 0 -1
1) "5"
2) "6"
3) "4"
4) "3"
5) "2"
6) "0"
127.0.0.1:6379[2]>

 

4、集合类型:集合类型在redis内部使用值为空的散列表(hash table)实现的,最方便的是多个集合类型键之间可以进行并集、交集和差集运算.

常用的命令:sadd、srem、smembers、sismember、sdiff、sinter、sunion。

1).增加(sadd)、删除(srem)、获取所有增加的元素(smembers)、判断指定元素是否存在(sismembers)。

127.0.0.1:6379[2]> sadd skey a b c d e
(integer) 5
127.0.0.1:6379[2]> smembers skey
1) "d"
2) "b"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379[2]> srem skey a c
(integer) 2
127.0.0.1:6379[2]> smembers skey
1) "d"
2) "b"
3) "e"
127.0.0.1:6379[2]> sismember skey a
(integer) 0
127.0.0.1:6379[2]>

 

2).集合运算(sdiff、sinter、sunion).

 

127.0.0.1:6379[2]> sadd set1 a b c d
(integer) 4
127.0.0.1:6379[2]> sadd set2 c d e f g
(integer) 5
127.0.0.1:6379[2]> sdiff set1 set2
1) "b"
2) "a"
127.0.0.1:6379[2]> sdiff set2 set1
1) "f"
2) "g"
3) "e"
127.0.0.1:6379[2]> sinter set1 set2
1) "d"
2) "c"
127.0.0.1:6379[2]> sunion set1 set2
1) "d"
2) "a"
3) "c"
4) "b"
5) "f"
6) "g"
7) "e"
127.0.0.1:6379[2]>

 

5、有序集合类型:有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间的部分数据速度也很快(时间复杂度为O(log(N)))。

 常用命令:

1).增加元素和获取元素的分数.

127.0.0.1:6379> zadd Tom 87 math 76 language 81 English
(integer) 3
127.0.0.1:6379> zscore Tom math
"87"
127.0.0.1:6379>

 

2).获取指定范围的元素.

 

127.0.0.1:6379> zadd Tom 87 math 76 language 81 English
(integer) 3
127.0.0.1:6379> zscore Tom math
"87"
127.0.0.1:6379> zrange Tom 0 2
1) "language"
2) "English"
3) "math"
127.0.0.1:6379> zrange Tom 0 2 withscores
1) "language"
2) "76"
3) "English"
4) "81"
5) "math"
6) "87"
127.0.0.1:6379>

 

 以上是对redis支持的五种数据类型的说明,以及常用的操作指令。

 

分享到:
评论

相关推荐

    Redis Python 客户端,Redis 键值存储的 Python 接口

    ### Redis Python 客户端:Redis 键值存储的 Python 接口 ...- **哈希操作**:支持对哈希表进行设置和获取值,适合存储结构化数据,如用户信息、配置项等。 - **列表操作**:支持对列表进行推入和弹出操作,适用于实现

    redis桌面链接工具redis-desktop

    redis桌面链接工具redis-desktop ...使用Redis Desktop Manager有助于简化Redis数据库日常管理任务,提高开发效率,并且由于其可视化的特性,使得非技术背景的用户也能更容易理解Redis中存储的数据结构和内容。

    redis win10 安装包

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-...Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

    redis架构图

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    c++ redis 4.3.1版本库

    Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-...Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

    Redis-基本数据类型与内部存储结构

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。这五种数据类型在内部的存储格式存在多种。

    Redis下载安装(Windows)

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-...Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

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

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

    redis-windows-7.0.11

    Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis可以用作数据库、缓存和消息中间件。Redis在性能、可扩展性和灵活性方面表现出色,因此被广泛应用于Web...

    Redis是一款开源的高性能键值存储系统,由Salvatore Sanfilippo于2009年开发 Redis以其内存存储、高

    同时,Redis支持多种数据结构,如字符串、列表、集合、有序集合和哈希等,这为开发者提供了极大的灵活性,可以根据不同的业务需求选择合适的数据结构。 在Redis开发过程中,官方文档和教程是不可或缺的资源。Redis...

    Redis-7.0.12-Windows-x64

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

    redis面试题.txt

    - 支持丰富的数据结构:Redis支持字符串、哈希表、列表、集合、有序集合等多种数据结构,使得开发者可以更灵活地处理数据。 - 持久化:Redis支持将数据持久化到磁盘,保证数据的安全性。 - 高可用性:Redis提供了...

    Redis_Window

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

    redisStudy.zip

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

    The-Little-Redis-Book中文版.pdf

    Redis支持多种数据结构,包括: * 字符串:Redis的字符串类型可以存储字符串、数字、日期等类型的数据 * 列表:Redis的列表类型可以存储有序的数据集合 * 集合:Redis的集合类型可以存储无序的数据集合 * 哈希表:...

    Windows 64位 Redis-3.2.100 解压即用

    Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-...Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

    【Redis开发】教程&案例&相关项目资源.docx

    支持多种数据结构: Redis 支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,使得开发人员可以根据具体需求选择合适的数据结构。 持久化: Redis 支持数据持久化,可以将数据保存到磁盘上,以防止数据...

    redis 使用说明

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-...• Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份

    超详细Redis数据库入门教程.docx

    哈希是 Redis 中的一种复杂的数据类型,哈希的值可以是多个键值对,哈希可以用来实现对象存储。 Redis 持久化 Redis 提供了两种持久化方式:RDB 和 AOF。 Redis 持久化 – RDB RDB(Redis Database)是一种基于...

    redis 高速缓存

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-...Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

Global site tag (gtag.js) - Google Analytics