简介
NoSQL 使用场景有:对数据高并发读写、对海量数据的高效率存储和访问、对数据的高可扩展性和高可用性等等。为了保证效率,数据都是在缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中。有了 redis 有哪些好处呢?举个比较简单的例子,看下图:

Redis 集群和 Mysql 是同步的,首先会从 redis 中获取数据,如果 redis 挂了,再从 mysql 中获取数据,这样网站就不会挂掉。
Redis的安装
为了简化操作快速开始,我这里使用到docker环境进行安装。假设你的虚拟机上已经安装docker。
搜索redis镜像 docker search redis拉取redis镜像 docker pull redis:5.0创建容器,设置端口映射 docker run -id --name=c_redis -p 6379:6379 redis:5.0
测试

你也可以不使用docker环境安装
1. # yum install -y gcc-c++ 由于是 c 语言编写,所以需要安装支持组件2. 把压缩包上传到 linux 服务器上 示例位置: /usr/local/tmp/ 下3. # cd /usr/local/tmp # tar zxvf redis-5.0.6.tar.gz 进入到/usr/local/tmp 下 运行解压命令4. # make 进入到解压后的目录编译5. # make install PREFIX=/usr/local/redis 安装,设置安装路径为/usr/local/redis 下 进入到 src 下安装6. # ./redis-server 前端启动,安装后不能进行其他操作 Ctrl+c 退出 命令要在 bin 目录下执行7. # cp /usr/local/tmp/redis-5.0.6/redis.conf /usr/local/redis/bin 把解压目录下配置文件拷贝到安装目录的 bin 下8.# vim redis.conf 修改 bin 下 redis.conf 把 daemonize 由 no 修改成 yes,守护进程启动9.# ps aux|grep redis 查看 redis 启动情况10.#./redis-server redis.conf 启动 redis 服务11.# ./redis-cli shutdown 如果希望关闭,运行上面命令,不关闭不运行即可12.# ./redis-cli 进入到自带客户端工具,测试 redis 是否可用测试案例# set name ‘diku’ 添加一个 string ,key 为 name,value 为 diku# get name 取出 name 中内容
Redis的数据类型

使用场景介绍
| 数据类型 | 使用场景 |
| String(字符串) | 1、访问量统计:每次访问博客和文章使用 INCR 命令进行递增 2、将数据以二进制序列化的方式进行存储 |
| Hash(字典) | 1、存储、读取、修改对象属性,比如:用户(姓名、性别、爱好),文章(标题、发布时间、作者、内容) |
| List(列表) | 1、最新消息排行等功能(比如朋友圈的时间线) 2、消息队列 |
| Set(集合) | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 1、排行榜,取TopN操作 2、带权重的消息队列 |
Springboot整合redis
1.导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--阿里巴巴fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency>
2.application.yml配置
server:port: 8080spring:#redis相关配置redis:database: 5# 配置redis的主机地址,需要修改成自己的host: 192.168.9.120port: 6379timeout: 5000jedis:pool:# 连接池中的最大空闲连接,默认值是8。max-idle: 500# 连接池中的最小空闲连接,默认值是0。min-idle: 50# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)max-active: 1000# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionExceptionmax-wait: 2000
3.常用api介绍
@RunWith(SpringRunner.class)@SpringBootTestpublic class RedisService {private static final Logger log= LoggerFactory.getLogger(RedisService.class);@Autowiredprivate StringRedisTemplate stringRedisTemplate;/*** set Redis:String类型*/@Testpublic void setString() {stringRedisTemplate.opsForValue().set("weichat","码酱");User user = new User();user.setUsername("diku");user.setPassword("123456");user.setAge(12);stringRedisTemplate.opsForValue().set("userInfo", JSON.toJSONString(user));}/*** get Redis:String类型*/@Testpublic void getString(){String weichat = stringRedisTemplate.opsForValue().get("weichat");String userInfo = stringRedisTemplate.opsForValue().get("userInfo");log.info(weichat);log.info(userInfo);}}
测试结果

3.2Hash类型
/*** set get Redis:Hash类型*/@Testpublic void setAndGetHash(){stringRedisTemplate.opsForHash().put("user","name","diku");Object o = stringRedisTemplate.opsForHash().get("user", "name");log.info("get('user','name')=======>"+String.valueOf(o));}
测试结果

3.3List类型
/*** set get Redis:List类型*/@Testpublic void setAndGetList(){stringRedisTemplate.opsForList().leftPush("list","zhangsan");stringRedisTemplate.opsForList().leftPush("list","lisi");List<String> list = stringRedisTemplate.opsForList().range("list", 0, -1);list.forEach(a->log.info("list中有{}:"+a));}
测试结果

这里只是列举了一些简单操作,更多的api使用还需要大家自己去尝试和掌握 总结 本篇主要介绍了 redis 的安装过程、数据类型使用场景,以及 Spring Boot 中集成 redis 。在实际项目中,通常都用 redis 作为缓存,在查询数据库的时候,会先从 redis 中查找,如果有信息,则从 redis中取;如果没有,则从数据库中查,并且同步到 redis 中,下次 redis 中就有了。更新和删除也是如此,都需要同步到 redis。redis 在高并发场景下运用的很多。
喜欢我加个关注吧






