电脑语言Redis学习总结

上传人:明 文档编号:55499456 上传时间:2018-09-30 格式:DOC 页数:12 大小:43KB
返回 下载 相关 举报
电脑语言Redis学习总结_第1页
第1页 / 共12页
电脑语言Redis学习总结_第2页
第2页 / 共12页
电脑语言Redis学习总结_第3页
第3页 / 共12页
电脑语言Redis学习总结_第4页
第4页 / 共12页
电脑语言Redis学习总结_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《电脑语言Redis学习总结》由会员分享,可在线阅读,更多相关《电脑语言Redis学习总结(12页珍藏版)》请在金锄头文库上搜索。

1、电脑语言电脑语言 RedisRedis 学习总结学习总结最近在工作中使用到了 redis 的相关缓存的知识,之前对 redis的理解仅仅局限于“缓存数据”、“redis 分布式锁”的简单使用,了解的知识面很窄。在结合了多方资料和虚机、java 代码进行实操后,加深了对 redis 的使用和理解。趁热打铁,对学习到的知识做一下总结。本次学习笔记 将从以下几个方面进行学习总结:NoSqlNoSql 简单介绍简单介绍* * RedisRedis 的基本数据类型的基本数据类型一、一、NoSqlNoSql 简单介绍简单介绍1 1、NoSqlNoSql 是什么?是什么?NoSQL,泛指非关系型的数据库,N

2、oSQL 即 Not-Only SQL,它可以作为关系型数据库的良好补充。2 2、能解决什么?、能解决什么?为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是 NoSql 数据库。3 3、该怎么用?、该怎么用? NoSqlNoSql 数据库的数据库的 4 4 大分类大分类 : :KV 键值,存储数据库(memcache、Redis 的存储类型)-本次学习redis 存储数据库文档型数据库(MongoDB)-之后学习列存储数据库(HBase)-之后学习图形数据库(Neo4J)-之后学习4 4、分布式数据中需要遵循的、分布式数据中需要遵循的 CAPCAP 原理原理C:Co

3、nsistency(强一致性)A:Availability(可用性)P:Partition tolerance(分区容错性)没有 NosQL 数据库能同时满足这三点这句话我个人的理解就是,在对于数据的强一直性和数据的分区容错性之间,系统更加倾向于接受“分区容错性”。在分布式数据库中有个 3 进 2 的原则,就是一个分布式系统中,最多只能同时满足 CA、CP、AP 相互使用。二、二、RedisRedis 的基本数据类型的基本数据类型String:在项目中最常见的一个使用方式就是,用来缓存用户的信息, 将用户信息的结构体使用 JSON 序列化成字符串,然后将序列化后的字符串放入 reids 的缓存

4、中进行存储。从缓存中取用户信息会经过一次反序列化的过程。当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M。参考资料参考资料 操作实例操作实例单个键值的存取单个键值的存取 set k1 v1OK get k1“v1“ del k1(integer) 1 get k1(nil)多个键值的存取多个键值的存取 set k2 v2OK mget k1 k2 k3# 返回一个列表1) “v1“2) “v2“3) (nil) mset k1 1 k2 2 k3 v3 mget k1 k2 k31) “1“2) “2“

5、3) “v3“keykey 值的过期策略值的过期策略 set k4 v4 get k4“v4“ expire k4 5 # 5s 后过期. # wait for 5s get k4(nil)List(链表): redis 的列表类似 java 的 LinkedList,是链表而不是数据,插入和删除速度很快,O(1),索引定位很慢 O(n)。Redis 的列表结构常用来做异步队列使用,将需要延后处理的任务结构体序列化成字符串塞进 redis 的列表,另一个线程从这个列表中轮询数据进行处理。当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。参考资料参考资料 操作实例操作实例 右进左出

6、(队列)右进左出(队列) rpush nums 1 2 3(integer) 3 llen nums(integer) 3 lpop nums“1“ lpop nums“2“ lpop nums“3“ lpop nums(nil)右进右出(栈)右进右出(栈) rpush nums 4 5 6(integer) 3 rpop nums“6“ rpop nums“5“ rpop nums“4“ rpop nums(nil)Hash:相当于 hashmap,hash 结构也可以存储用户的信息,可以对用户结构中的每个字段单独存储, 这样当我们需要获取用户信息时可以进行部分获取。参考资料参考资料 操作实

7、例操作实例 hset books java “think in java“ # 命令行的字符串如果包含空格,要用引号括起来(integer) 1 hset books golang “concurrency in go“(integer) 1 hset books python “python cookbook“(integer) 1 hgetall books # entries(),key 和 value 间隔出现 1) “java“2) “think in java“3) “golang“4) “concurrency in go“5) “python“6) “python cookbo

8、ok“ hlen books(integer) 3 hget books java“think in java“ hset books golang “learning go programming“ # 因为是更新操作,所以返回 0(integer) 0 hget books golang“learning go programming“ hmset books java “effective java“ python “learning python“ golang “modern golang programming“ # 批量 setOKSet:相当于 Hashset,内部的键值对是无

9、序的惟一的,set 结构可以存储活动中中奖的用户 ID,因为有去重的功能,可以保证同一个用户不会中奖两次。参考资料参考资料 操作实例操作实例 sadd books python(integer) 1 sadd books python # 重复(integer) 0 sadd books java golang(integer) 2 smembers books # 注意顺序,和插入的并不一致,因为 set 是无序的 1) “java“2) “python“3) “golang“ sismember books java # 查询某个 value 是否存在,相当于 contains(o)(in

10、teger) 1 sismember books rust(integer) 0 scard books # 获取长度相当于 count()(integer) 3 spop books # 弹出一个“java“zset:类似于 SortedSet 和 HashMap 的结合体,set 既可以保证 value的唯一性,另一方面可以给每个 value 赋予一个值,代表着排序权重 zset 可以用来存储粉丝列表,value 值是粉丝的用户 ID,score是关注时间,对粉丝类表按照关注时间进行排序 参考资料 操作实例 zadd books 9.0 “think in java“(integer) 1

11、 zadd books 8.9 “java concurrency“(integer) 1 zadd books 8.6 “java cookbook“(integer) 1 zrange books 0 -1 # 按 score 排序列出,参数区间为排名范围 1) “java cookbook“2) “java concurrency“3) “think in java“ zrevrange books 0 -1 # 按 score 逆序列出,参数区间为排名范围 1) “think in java“2) “java concurrency“3) “java cookbook“ zcard b

12、ooks # 相当于 count()(integer) 3 zscore books “java concurrency“ # 获取指定 value 的 score“8.9000000000000004“ # 内部 score 使用 double 类型进行存储,所以存在小数点精度问题 zrank books “java concurrency“ # 排名(integer) 1 zrangebyscore books 0 8.91 # 根据分值区间遍历 zset1) “java cookbook“2) “java concurrency“ zrangebyscore books -inf 8.91 withscores # 根据分值区间 (-, 8.91 遍历 zset,同时返回分值。inf 代表 infinite,无穷大的意思。1) “java cookbook“2) “8.5999999999999996“3) “java concurrency“4) “8.9000000000000004“ zrem books “java concurrency“ # 删除 value(integer) 1 zrange books 0 -11) “java cookbook“

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号