Redis 是一个 key-value 存储系统,但是它的 value 值不仅仅可以存储字符串,value 共有 五种 数据结构类型,具体如下:

数据结构类型

结构类型 结构存储的值 结构的读写能力
STRING 可以是字符串、整数或者浮点数 另有自增、自减操作
LIST 一个链表,每个节点包含一个字符串  
SET 包含无序、不重复的字符串 可计算交、并、差集,可随机获取元素
HASH 包含键值对的无序散列表  
ZSET 字符串(键)与分值(值-浮点数)之间的有序(按分值)映射 可根据分值或成员获取元素

一些简单的操作:

字符串 STRING 操作:GET、SET、DEL

# 使用 redis-cli
127.0.0.1:> set hello wordl
OK
127.0.0.1:> get hello
"wordl"
127.0.0.1:> del hello
(integer)
127.0.0.1:> get hello
(nil)

列表 LIST 操作:LPUSH、RPUSH、LPOP、RPOP、LINDEX、LRANGE

# 在列表右侧添加元素
127.0.0.1:> rpush list-key item
(integer)
127.0.0.1:> rpush list-key item2
(integer)
127.0.0.1:> rpush list-key item
(integer)
# 获取列表所有元素(索引 - 表示最后一个元素索引)
127.0.0.1:> lrange list-key -
) "item"
) "item2"
) "item"
# 获取指定索引的元素(从 开始)
127.0.0.1:> lindex list-key
"item2"
# 从左侧弹出一个元素
127.0.0.1:> lpop list-key
"item"
127.0.0.1:> lrange list-key -
) "item2"
) "item"

集合 SET 操作:SADD、SREM、SISMEMBER、SMEMBERS、SINTER、SUNION、SDIFF

127.0.0.1:> sadd set-key item
(integer)
127.0.0.1:> sadd set-key item2
(integer)
127.0.0.1:> sadd set-key item3
(integer)
# 无法添加重复元素
127.0.0.1:> sadd set-key item
(integer)
# 获取 SET 中的所有元素
127.0.0.1:> smembers set-key
) "item"
) "item3"
) "item2"
# 判断元素是否在 SET 中
127.0.0.1:> sismember set-key item4
(integer)
127.0.0.1:> sismember set-key item
(integer)
127.0.0.1:> srem set-key item2
(integer)
127.0.0.1:> smembers set-key
) "item"
) "item3"
# 删除 SET 中的指定元素
127.0.0.1:> srem set-key item2
(integer)

哈希 HASH 操作:HSET、HGET、HGETALL、HDEL

127.0.0.1:> hset hash-key sub-key1 value1
(integer)
127.0.0.1:> hset hash-key sub-key2 value2
(integer)
# 无法添加重复的 key, 添加后会覆盖之前的 value 值
127.0.0.1:> hset hash-key sub-key1 value1
(integer)
# 获取所有的 key, value
127.0.0.1:> hgetall hash-key
) "sub-key1"
) "value1"
) "sub-key2"
) "value2"
# 删除指定的 key 的键值对
127.0.0.1:> hdel hash-key sub-key2
(integer)
127.0.0.1:> hdel hash-key sub-key2
(integer)
127.0.0.1:> hdel hash-key sub-key1
(integer)
127.0.0.1:> hgetall hash-key
(empty list or set)

有序集合 ZSET 操作:ZADD、ZRANGE、ZRANGEBYSCORE、ZREM

# 添加元素 memebers,并指定其 分值 为
127.0.0.1:> zadd zset-key memeber1
(integer)
127.0.0.1:> zadd zset-key member0
(integer)
127.0.0.1:> zadd zset-key member0
(integer)
# 获取指定范围的元素(元素按照 分值 升序排列)
127.0.0.1:> zrange zset-key - withscores
) "memeber1"
) ""
) "member0"
) ""
127.0.0.1:> zrange zset-key -
) "memeber1"
) "member0"
# 获取在指定分值范围内的元素
127.0.0.1:> zrangebyscore zset-key withscores
) "memeber1"
) ""
# 删除指定成员的元素
127.0.0.1:> zrem zset-key memeber1
(integer)
127.0.0.1:> zrem zset-key member1
(integer)
127.0.0.1:> zrange zset-key - withscores
) "member0"
) ""

附:Redis 命令参考 http://redisdoc.com/

Redis 笔记(一)——数据类型简介的更多相关文章

  1. redis安装及数据类型简介(string、list、set、sorted_set、hash)

    一:简介: redis国内最大的案例--->新浪微博 memcache:是key-value数据库 数据类型:只支持key value数据 过期策略:支持 持久化:不支持(可以通过三方程序) 主 ...

  2. 「Redis 笔记」数据类型

    REmote DIctionary Server(Redis),一个 key-value 存储系统. 数据类型 Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表) ...

  3. Redis API与常用数据类型简介

    Redis API与常用数据类型简介 一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些 ...

  4. Redis数据类型简介(十分钟快速学习Redis)

    如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...

  5. NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

    一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...

  6. 【转】NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

    一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...

  7. redis笔记之一

    NoSQL简介 全称是Not Only SQL,泛指菲关系型数据库,它是通过键值对存储数据并且将数据存储在内存中.而像mysql,sql server这些通过关系表存数据的就叫关系型数据库 为什么需要 ...

  8. redis中各种数据类型对应的jedis操作命令

    redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...

  9. redis笔记总结之redis介绍

    一.Redis介绍: redis的发展历史简单的理解为因为使用类似MySql这类关系型数据库不方便进而开发的开源的.轻量级的.非关系型的,直到现在一直不断完善的一款NoSql数据库.具体的介绍大家可以 ...

  10. Redis(三)--- Redis的五大数据类型的底层实现

    1.简介 Redis的五大数据类型也称五大数据对象:前面介绍过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包 ...

随机推荐

  1. Django的路由系统01-路由分发

    1. Including other URLconfs 原urls.py文件,多个app的路由系统写在一起,不方便管理 范例: from django.conf.urls import url fro ...

  2. c++作业22题

    一.单选题(共22题,100.0分) 1 已知int i=5,下列do-while循环语句的循环次数是 do{ cout<<i - -<<endl; i - -; }while ...

  3. 《Linux环境进程间通信》系列文章链接

    深刻理解 Linux 进程间通信(IPC) http://www.ibm.com/developerworks/cn/linux/l-ipc/index.html Linux 环境进程间通信(一): ...

  4. WebRTC的RTCPeerConnection()原理探析

    从getUserMedia()到RTCPeerConnection(),自认为难度陡增.我想一方面是之前在Linux平台上学习ROS调用摄像头时,对底层的外设接口调用.摄像头参数都有学习理解:另一方面 ...

  5. Natas13 Writeup(文件上传,绕过图片签名检测)

    Natas13: 与上一关页面类似,还是文件上传,只是多了提示“出于安全原因,我们现在仅接受图像文件!”.源码如下 function genRandomString() { $length = 10; ...

  6. centOS6.5桌面版用不了中文输入法解决方案

    1:centos6.5中   系统->首选项->输入法中选择“使用iBus(推荐)”,点击首选输入法n遍,没有任何效果. 2.我也弄了很多种方式包括用 yum install " ...

  7. ArrayList,HashSet,SortedSet之间的区别是什么?

    今天看Redis官方案例,出现了列表和集合概念,列表在Java中指的就是List,集合在Java中指的就是Set,那么怎么实现列表和集合,以及它们有什么区别呢? 我写了个Demo演示下: import ...

  8. 记一次phpstudy应急响应

    某日,销售接了一个电话,突然告诉我有个某单位服务器中了木马被黑,具体情况未知.由于客户那边比较急,于是我火速赶往客户现场.到现场,客户首先给我看了深信服防火墙拦截记录,显示内网三台机器被入侵.通过沟通 ...

  9. MySQl数据类型和条件限制

    数据库的增删改查已经介绍完毕,今天从表的详细操作开始讲解 表操作 今日内容 1.数据类型 建表的时候,字段都有对应的数据类型 整型 浮点型 字符类型(char与varchar) 日期类型 枚举与集合 ...

  10. sql-lib闯关21-30

    第二十一关 base64编码,单引号,报错型,cookie型注入. 本关和less-20相似,只是cookie的uname值经过base64编码了,下图为我们输入万能密码显示 uname = YWRt ...