Redis学习(一)
1. 什么是Redis
-
基本概念
Redis是一种基于键值对的NoSql数据库。
与很多键值对数据库不同的是,Redis中的值是有string、hash、list、set、zset、Bitmaps、HyperLogLog、GEO等多种数据结构和算法组成,因此redis可以满足很多应用场景,而且因为redis会将所有数据都放在内存中,所以它的读写性能非常惊人。不仅如此,redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在断电或故障是,内存中的数据不会丢失。
此外,redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。 -
redis的优势
- 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
- 支持丰富数据类型,支持string,list,set,sorted set,hash
- 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
- 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
2. redis的应用场景
- 缓存
- 对于一些要返回给前端数据的缓存,当有大量数据库sql操作时候,为了避免每次接口请求都要去查询数据库,可以把一些数据缓存到redis中,这样是直接从内存中获取数据,速度回增快很多。
- web端用户,用于登陆缓存session数据,登陆的一些信息存到session中,缓存到redis中。
- 队列
- redis中提供了list接口,这个list提供了lpush和rpop,这两个方法具有原子性,可以插入队列元素和弹出队列元素。
- 数据存储
- redis是非关系型数据库,可以把redis直接用于数据存储,提供了增删改查等操作,因为redis有良好的硬盘持久化机制,redis数据就可以定期持久化到硬盘中,保证了redis数据的完整性和安全性。
- redis锁实现防刷机制
- redis锁可以处理并发问题,redis数据类型中有一个set类型,set类型在存储数据的时候是无序的,而且每个值是不一样的,不能重复,这样就可以快速的查找元素中某个值是否存在,精确的进行增加删除操作。
说明:redis使用场景的基本操作会在redis学习(3)-实战篇中讲解。
3. redis安装与启动
-
redis的安装
- **下载地址:**https://github.com/tporadowski/redis/releases
2. 双击:Redis-x64-5.0.14.msi-
选择“同意协议”,点击下一步继续。
-
选择“添加Redis目录到环境变量PATH中”,这样方便系统自动识别Redis执行文件在哪里。
-
端口号可保持默认的6379,并选择防火墙例外,从而保证外部可以正常访问Redis服务。
-
设定最大值为100M。作为实验和学习,100M足够了。
-
安装好后:
redis-server.exe:服务端程序,提供 redis 服务
redis-cli.exe: 客户端程序,通过它连接 redis 服务并进行操作
-
右击“计算机”>选择“管理”。在左侧栏中依次找到并点击“计算机管理(本地)”>服务和应用程序>服务。再在右侧找到Redis名称的服务,查看启动情况。如未启动,则手动启动之。正常情况下,服务应该正常启动并运行了。
-
设置密码(选):
打开 redis-cli.exe
CONFIG SET requirepass "yourpassword"
或
打开 redis.windows.conf 配置文件 // window系统是带windows的,linux系统是redis.conf
找到requirepass foobared,把前面的#号去掉,把foobared改成密码
例如requirepass 123456 -
测试:
打开 redis-cli.exe
正常提示进入,并显示正确端口号,则表示服务已经启动。
使用服务前需要先通过密码验证。输入“auth 020826”并回车(020826是之前设定的密码)。
返回提示OK表示验证通过。
4. redis的基本命令
-
启动redis命令:
./redis-server # 直接启动redis,有的时候需要启动固定配置文件(重新设置过密码)的redis, # 例如: redis-server redis/redis.windows.conf # 或者 ./redis-server …/redis.conf
-
redis服务相关命令
# 卸载服务: redis-server --service-uninstall # 启动服务: redis-server --service-start # 停止服务: redis-server --service-stop