一、内容简介

Redis不仅仅是简单的key-value 存储器,同时也是一种data structures server。传统的key-value是指支持使用一个key字符串来索引value字符串的存储,而Redis中,value不仅仅支持字符串,还支 持更多的复杂结构,包括列表,集合,哈希表等。现在我们一一讲解:Redis keys是采用二进制安全,这就意味着你可以使用任何二进制序列作为重点,从像"foo"可以联系一个 JPEG 文件。空字符串也是一个有效的密钥。

二、准备

启动服务

service redis-server start

启动客户端

redis-cli

三、Redis Strings(redis字符串)

字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或者一个序列化的Ruby对象。一个字符串类型的值最多能存储512M字节的内容

1️⃣创建和检索strings命令——set、get

  set key value   ***set命令将取代现有的任何已经存在的key***

  get key

2️⃣创建strings时加一步check——set nx、set xx

*如果key已存在,则无法创建

set key value nx

*如果key已存在,依然创建并取代现有已存在的key

set key value xx

3️⃣strings字符串类型可以做加法器——incr、incrby、decr、decrby

incr key使其value变成整数并运行value+1

incrby keyn 使其value变成整数并运行value+n

对应的减法器命令

decr,decrby

4️⃣批量创建  mset、mget

mset key1 value1 key2 value2 key3 value3

mget key1 key2 key3

四、Redis Lists (redis列表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素导头部, 而 RPUSH插入一个新元素导尾部.当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。相似的,如果一个列表操作清空一个列表那么对应的 key将被从key空间删除。这是非常方便的语义,因为他们被调用使用一个空列表完全就像他们被调用时使用一个不存在的键值(可以)做为参数。

1️⃣创建、查看、删除——lpush、rpush、lrange、del

*创建列表,并从列头插入(左边插入)

lpush key value1 value2 value3

*创建列表,并从列尾插入(右边插入)

rpush key value4 value5 value6

*查看列表内的字符串value

lrange key 0 -1   ***0即列首-正数第一个,-1即列尾-倒数第一个

列表内排列顺序为

  1)value3

  2)value2

  3)value1

  4)value4

  5)value5

  6)value6

*删除列表key

del key

2️⃣从列表key中取出并显示元素——lpop、rpop

*从列表key中取出并显示元素第一个元素

lpop key

*从列表key中取出并显示元素倒数第一个元素  rpop key

三、Redis Hashes(redis 哈希)

Redis Hashes是字符串字段和字符串值之间的映射,因此他们是展现对象的完美数据类型。 (例如:一个有名,姓,年龄等等属性的用户):一个带有一些字段的hash仅仅需要一块很小的空间存储,因此你可以存储数以百万计的对象在一个小的 Redis实例中。 哈希主要用来表现对象,他们有能力存储很多对象,因此你可以将哈希用于许多其他的任务。

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

1️⃣创建、检索redis hashes——hset、hmset、hget、hgetall、hdel

*创建哈希key并添加一对映射

hset key filed0 value0

*创建哈希hash2并添加多对映射

hmset key field1:value1 field2:value2 field3:value3

*查看key中的某个映射

hget key field1

*查看key中所有映射

  hgetall key

*追加一对映射

hset key filed4 value4

*追加多对映射

  hmset key field5:value5 field6:value6 field7:value7

*删除key中的一对或多对映射

hdel key field4 field5

2️⃣加法操作并显示——hincrby

hincrby key field2 n

四、Redis set(redis 无序集合)

Redis 集合(Set)是一个无序的字符串集合. 你可以以O(1)的时间复杂度 (无论集合中有多少元素时间复杂度都是常量)完成添加,删除,以及测试元素是否存在。 Redis 集合拥有令人满意的不允许包含相同成员的属性。多次添加相同的元素,最终在集合里只会有一个元素。 实际上说这些就是意味着在添加元素的时候无须检测元素是否存在。 一个Redis集合的非常有趣的事情是他支持一些服务端的命令从现有的集合出发去进行集合运算,因此你可以在非常短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

1️⃣创建、显示无序集合——sadd、smembers

*创建一个无序集合key

sadd key member1 member2 member3

*查看无序集合内成员

smember key

2️⃣判断member1元素是否是集合set1的成员

sismember key member1

是返回1,否返回0

五、Redis sorted set(redis 有序集合)

Redis有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的没有成员都关联了一个评分,这个评分被用来按照从最低分到 最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。 使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序 集合作为一个没有重复成员的智能列表。在有序集合中,你可以很快捷的访问一切你需要的东西:有序的元素,快速的存在性测试,快速访问集合的中间元素! 简而言之使用有序集合你可以做完成许多对性能有极端要求的任务,而那些任务使用其他类型的数据库真的是很难完成的。

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

1️⃣创建有序集合,并添加成员——zadd

ZADD key score1 member1 [score2 member2]

**score可以重复,有相同score的member会按照字母或数字排列

2️⃣查看有序集合成员——zrange、zrevrange

正序查看

zrange key

倒序查看

zrevrange key

*默认不显示score,如果需要显示,添加withscore参数

zrange key withscore

zrevrange key withscore

更详细的命令介绍,参考http://www.runoob.com/redis/redis-sorted-sets.html

转载于:https://www.cnblogs.com/roger888/p/6093923.html

redis学习——数据类型相关推荐

  1. Redis学习笔记 - 数据类型与API(1)Key

    Redis学习笔记 - 数据类型与API(1)Key Key相关命令 1. 常用命令 命令 含义 时间复杂度 keys 查找所有符合给定模式 pattern 的 key O(N), N 为数据库中 k ...

  2. Redis学习(4)-数据类型set和zset

    Set数据类型及操作 Set集合是通过hash table实现的,所以添加.删除和查找的复杂度都是O(1),hash table会随着添加或者删除自动的调整大小,需要注意的是 hash table大小 ...

  3. Redis学习总结(数据类型、持久化、事务、数据删除策略、主从复制、哨兵、缓存雪崩等)

    Redis学习总结 1.Redis是什么 1.概念 2.特点 3.应用场景 2.Linux环境安装redis 3.Redis的数据存储格式 1.String类型 1.String类型的常用操作 2.S ...

  4. Redis学习之旅--Redis的数据类型你都知道吗?

    Redis学习之旅--数据类型 Redis-Key String(字符串) list(列表) Set(集合) Hash(哈希) Zset(有序集合) geospatial hyperloglog bi ...

  5. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...

  6. Redis学习笔记(一) 数据类型事务异常Jredis

    Redis学习笔记(一) NoSql概述 Nosql四大分类 Redis入门 简介 Windows安装 基础使用 问题 Redis4.0之前为什么是单线程 单线程为什么这么快 Redis4.0后的多线 ...

  7. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

  8. redis学习-redis五大数据类型

    五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...

  9. Redis学习之缓存数据类型

    Redis缓存数据类型有5种,分别是String(字符串).List(列表).Hash(哈希).Set(无序,不重复集合).ZSet(sorted set:有序,不重复集合). String(字符串) ...

最新文章

  1. Matlab与数据结构 -- 如何获取给定目录中的文件
  2. qq满屏飞吻代码_教你用微信隐藏代码表白!各种微信技巧
  3. 白话Elasticsearch17-深度探秘搜索技术之match_phrase query 短语匹配搜索
  4. COM_ASET check in CRM Middleware inbound scenario
  5. POJ 1286 Necklaces of Beads (Burnside定理,有限制型)
  6. 做了中台就不会死吗?每年至少40%开发资源是被浪费的!
  7. python拉格朗日插值法_【统计学】拉格朗日插值法的一种python实现方式
  8. kafka 0.8.2版本配置选项翻译
  9. python UDP Socket编程
  10. List集合去重方式及效率对比
  11. 读《天才在左,疯子在右》03--灵魂深处
  12. 域名解析不生效,中科三方带你定位!
  13. Java专题 Java使用第一步 环境搭建JDK及JRE(含多版本JDK切换思路)
  14. Python:实现doomsday末日算法(附完整源码)
  15. Alist+RaiDrive将你的云盘本地化
  16. 安卓识别exfat_如何使安卓手机能够读写移动硬盘?
  17. 用MSN Cartoon做的卡通自画像
  18. 小说项目怎么玩才能赚钱?
  19. UEdit百度富文本编辑器
  20. iOS JS与OC交互

热门文章

  1. 丹东御空服务器维修,【正式服】3月14日例行更新维护公告
  2. java扫雷具有win7_Win7系统自带扫雷游戏打不开的解决方法
  3. java提取字符从mysql_MySQL 字符串截取SUBSTRING()函数
  4. php 判断3个数谁最小,Python编程学习之如何判断3个数的大小
  5. wordpress留言板comments.php添加自定义字段,php – 如何自定义WordPress comment_form();
  6. 高等数学与python高级应用_python高级应用程序与设计
  7. sql时间格式转换yyyymm_XML和实体类之间的转换
  8. profile matlab,使用profile功能对Matlab性能调优
  9. 机器人学中的状态估计 中文版_机器人学中的状态估计/State Estimation for Robotics—第三章习题答案...
  10. 自制一个害羞的口罩,见人就闭嘴,戴着可以喝奶茶