长风破浪会有时,直挂风帆济沧海
![](https://img.haomeiwen.com/i15928074/0637c17ce075c47a.png)
- Redis是什么?
- Redis的主要应用场景有哪些?
- Redis单机安装要掌握?
- Redis的数据类型各自的使用场景?
Redis是什么?
1、Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种 NoSQL 数据库。它是【单进程单线程】的内存数据库,所以说不存在线程安全问题。
2、单机可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO多路复用(NIO思想)】
3、相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型。
4、它提供了五种数据类型来存储【值】:字符串类型(string)、散列类型(hash)、列表类型(list)、集合类型(set)、有序集合类型(sortedset、zset)
Redis的主要应用场景有哪些?
1、内存数据库(登录信息、购物车信息、用户浏览记录等)
2、缓存服务器(商品数据、广告数据等等)(最多使用)
解决分布式集群架构中的 session 分离问题( session 共享)
3、任务队列(秒杀、抢购、12306等等)
4、分布式锁的实现
5、支持发布订阅的消息模式
6、应用排行榜(有序集合)
7、网站访问统计
8、数据过期处理(可以精确到毫秒)
Redis单机安装要掌握?
1、安装c语言环境
yum install -y gcc-c++
yum install -y wget
2、下载并解压缩 Redis 源码压缩包
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zxf redis-5.0.4.tar.gz
3、编译 Redis 源码,进入 redis-3.2.9 目录,执行编译命令
cd redis-5.0.4
make
4、安装 Redis ,需要通过 PREFIX 指定安装路径
make install PREFIX=/kkb/server/redis
5、启动命令:
redis-server ,直接运行 bin/redis-server 将以前端模式启动
./redis-server
6、redis客户端
./redis-cli -h 127.0.0.1 -p 6379
Redis的数据类型各自的使用场景及注意事项是什么?
1、String
场景:商品编号、订单号采用 INCR 命令生成。
2、Hash
场景:应用之存储商品信息
192.168.101.3:7003> HMSET items:1001 id 3 name apple price 999.9
OK
192.168.101.3:7003> HGET items:1001 id
"3"
192.168.101.3:7003> HGETALL items:1001
- "id"
- "3"
- "name"
- "apple"
- "price"
- "999.9"
3、list (双向链表)
先分析下2种List的区别:
ArrayList 使用数组方式存储数据,所以根据索引查询数据速度快,而新增或者删除元素时需要设计到位移操作,所以比较慢。
LinkedList 使用双向链表方式存储数据,每个元素都记录前后元素的指针,所以插入、删除数据时只是更改前后元素的指针指向即可,速度非常快。然后通过下标查询元素时需要从头开始索引,所以比较慢,但是如果查询前几个元素或后几个元素速度比较快。
Redis 的列表类型( list 类型)可以 存储一个有序的字符串列表 ,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表( double linked list )实现的,所以向列表两端添加元素的时间复杂度为0(1) ,获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。
应用之商品评论列表:
需求:用户针对某一商品发布评论,一个商品会被不同的用户进行评论,存储商品评论时,要按时间顺序排序。用户在前端页面查询该商品的评论,需要按照时间顺序降序排序。
分析:使用list存储商品评论信息,KEY是该商品的ID,VALUE是商品评论信息列表 。
4、set
set 类型即集合类型,其中的数据是不重复且没有顺序。
Redis 还提供了多个集合之间的交集、并集、差集的运算。
5、zset
在 set 集合类型的基础上,有序集合类型为集合中的每个元素都 关联一个分数 ,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。
应用之商品销售排行榜
根据商品销售量对商品进行排行显示
192.168.101.3:7007> ZADD items:sellsort 9 1001 10 1002
192.168.101.3:7001> ZINCRBY items:sellsort 1 1001
//商品销量前 10 名
192.168.101.3:7001> ZREVRANGE items:sellsort 0 9 withscores
网友评论