这篇文章主要介绍Redis的简介分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 Redis简介什么是Redis
Redis是完全开源免费的,遵守BSD协议,是⼀个⾼性能(N免费云主机域名OSQL)的key-value数据库。Redis是⼀个开源的使⽤ANSI C语⾔编写、⽀持⽹络、可基于内存亦可持久化的⽇志型、Key-Value数据库,并提供多种语⾔的API。Nosql:2 Redis安装2.1 安装前准备Redis官⽹官⽅⽹站:http://redis.io
中⽂官⽹:http://redis.cn
官⽅⽹站下载:http://redis.io/downloadRedis 安装Linux
Redis是C语⾔开发,安装Redis需要先将官⽹下载的源码进⾏编译,编译依赖GCC环境,如果没有GCC环境,需要安装GCCWindows
直接解压即可
建议redis安装的⽬录增加到环境变量2.2 Redis的启动Linux启动Redis服务端进⼊对应的安装⽬录执⾏命令Linux启动Redis客户端Windows启动Redis服务端进⼊对应的安装⽬录,打开命令窗⼝
执⾏命令Windows启动Redis客户端进⼊对应的安装⽬录,打开命令窗⼝
执⾏命令客户端启动成功之后的图:
3 Redis核⼼配置⽂件Redis.confRedis持久化总结:RDB:是Redis默认的持久化机制。RDB相当于照快照,保存的是⼀种状态。⼏⼗GB的数据 ——> ⼏KB
的快照快照是默认的持久化⽅式,这种⽅式是就是将内存中数据以快照的⽅式写⼊到⼆进制⽂件中,默认的⽂件名为dump.rdb。优点:快照保存数据极快、还原数据极快
适⽤于容灾备份缺点:⼩内存机器不适合使⽤,RDB机制符合要求就会照快照,可能会丢失数据快照条件:1、服务器正常关闭时 ./bin/redis-cli shutdown2、key满⾜⼀定条件,会进⾏快照AOF:由于快照⽅式是在⼀定时间间隔内做⼀次的,那么如果redis意外down掉的话,就会丢失最后⼀次快照后的所有修改。如果应⽤要求不能丢失任何修改的话,可以采取aof持久化⽅式。Append-only file:aof ⽐快照⽅式有更好的持久化性,是由于在使⽤aof持久化⽅式时,redis会将每⼀个收到的写命令都通过write函数追加到⽂件中(默认appendonly.aof)。当redis重启时会通过执⾏⽂件中保存的写命令来在内存中重建整个数据库的内容。有三种⽅式如下:(默认是每秒⼀次)appendonly yes 启⽤aof持久化⽅式
appendsync always 收到写命令就⽴即写⼊磁盘,最慢,但是保证完全的持久化
appendsync 每秒钟写⼊磁盘⼀次,在性能和持久化⽅⾯做了很好的折中
appendsync no 完全依赖os,性能最好,持久化没有保证4 Redis常⽤数据类型以及应⽤场景Redis⽀持五种数据类型:String(字符串),hash(哈希),list(列表),set(集合)以及 zset(sorted set:有序集合) 等4.1 Stringstring是Redis最基本的类型,⼀个key对应⼀个value,⼀个键最⼤能存储512MB。string类型是⼆进制安全的。意思是Redis的string可以包含任何数据。⽐如jpg图⽚或者序列化对象。⼆进制安全是指,在传输数据时,保证⼆进制数据的信息安全,也就是不被篡改、破译等,如果有被攻
击,能够及时检测出来跟之前的map ⾮常类似。Value是字符串。应⽤场景:很常⻅的场景⽤于统计⽹站访问数量 pv(Page view),当前在线⼈数等。incr命令(++操 作)4.2 ListRedis的列表允许⽤户从序列的两端推⼊或者弹出元素,列表由多个字符串值组成的有序可重复的序列,是链表结构,所以向列表两端添加元素的时间复杂度为o(1),获取越接近两端的元素速度就越快。这意味着即使是⼀个有⼏千万个元素的列表,获取头部或尾部的10条记录也是极快的。List中可以包含的最⼤元素数量是4294967295。应⽤场景:1.最新消息排⾏榜。2.消息队列,以完成多程序之间的消息交换。可以⽤push操作将任务存
在list中(⽣产者),然后线程在⽤pop操作将任务取出进⾏执⾏。(消费者)4.3 Hash (⼆维表)Redis中的散列可以看成具有String key和String value的map容器,可以将多个key-value存储到⼀个key中。每⼀个Hash可以存储4294967295个键值对。应⽤场景:例如存储、读取、修改⽤户属性(name,age,pwd等)4.4 Set(⽆序集合)应⽤场景:
1.利⽤交集求共同好友。
2.利⽤唯⼀性,可以统计访问⽹站的所有独⽴IP。
3.好友推荐的时候根据tag求交集,⼤于某个threshold(临界值的)就可以推荐。
4.5 SortSet(有序集合)应⽤场景:可以⽤于⼀个⼤型在线游戏的积分排⾏榜,每当玩家的分数发⽣变化时,可以执⾏zadd更新
玩家分数(score),此后在通过zrange获取⼏分top ten的⽤户信息。5 Redis的整合(Jedis) Java for Redis5.1 导包5.2 配置5.3 使⽤6 Springboot2.x中Redis进⾏连接(RedisTemplate)RedisTemplate 简介,SpringBoot对Redis进⾏了⼀层模板化的封装,⽅便我们对对象进⾏操作。底层
在SpringBoot1.x的时候使⽤的是Jedis,在Springboot2.x后使⽤的是lettuce。6.1 导包6.2 配置6.3 使⽤7 Springboot2.x中使⽤Redisson进⾏连接Redisson:Redisson是⼀个在Redis的基础上实现的Java驻内存数据⽹格(In-Memory Data Grid)。它不仅提供了⼀系列的分布式的Java常⽤对象,还提供了许多分布式服务。其中包括( BitSet , Set ,
Multimap , SortedSet , Map , List , Queue , BlockingQueue , Deque , BlockingDeque ,Semaphore , Lock , AtomicLong , CountDownLatch , Publish / Subscribe , Bloom filter ,Remote service , Spring cache , Executor service , Live Object service , Scheduler service ) Redisson提供了使⽤Redis的最简单和最便捷的⽅法。Redisson的宗旨是促进使⽤者对Redis的关注分离(Separation of Concern),从⽽让使⽤者能够将精⼒更集中地放在处理业务逻辑上。开源地址:https://github.com/redisson/redisson7.1 导包7.2 配置7.3 使⽤参考命令匹配列表8 Redis内存淘汰策略Redis官⽅给的警告,当内存不⾜时,Redis会根据配置的缓存策略淘汰部分的Keys,以保证写⼊成功。当⽆淘汰策略时或者没有找到适合淘汰的Key时,Redis直接返回 out of memory错误。最⼤缓存配置
在Redis中,允许⽤户设置的最⼤使⽤内存⼤⼩
maxmemory 512GRedis提供8种(5.0以后)数据淘汰策略:volatile-lru:从已设置过期时间的数据集中挑选最近最少使⽤的数据淘汰volatile-lfu:从已设置过期的Keys中,删除⼀段时间内使⽤次数最少使⽤ 的keyvolatile-ttl:从已设置过期时间的数据集中挑选最近将要过期的数据进⾏淘汰volatile-random:从已设置过期时间的数据集中随机选择数据淘汰allkeys-lru:从数据集中挑选最近最少使⽤的数据淘汰allkeys-lfu:从所有的keys中,删除⼀段时间内使⽤次数最少的keyallkeys-random:从数据集中随机选择数据淘汰no-enviction(驱逐):禁⽌驱逐数据(不采⽤任何淘汰策略。默认即此配置),内存不⾜时,针对写操作,返回错误信息建议:了解了Redis的淘汰策略之后,在平时使⽤时应尽量主动设置/更新key的expire时间,主动剔除不活跃的旧数据,有助于提升查询性能以上是“Redis的简介分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云行业资讯频道!
相关推荐: Oracleå®æºæ¡ä¾æ±æ»(ä¸)
Oracle() UNDO Oracle Open expdp/impdp BUG impdp drop user …. UNDO ORA-01578 : ORACLE data block corrupted (file # 3 , block # 28…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。