文章目录
一、下载
下载地址: https://github.com/MicrosoftArchive/redis/releases
我们下载这个版本;然后解压到我们自己的目录
二、 安装与调试
-
1、打开cmd(Win+R:输入cmd)
-
2、进入到解压目录
-
3、进入到目录以后使用命令
redis-server.exe --service-install redis.windows.conf --loglevel verbose
进行安装和注册redis到window服务 (win+R
键入命令services.msc
可以查看已经注册的服务。以后开启服务也可以从这里开启。)可以看到这个记录即可
卸载服务:
-
3、使用
redis-server.exe --service-start
启动redis服务可以看到也成功启动
-
4、启动服务器以后,重新打卡一个cmd作为调试窗口,上面的cmd命令行窗口不能关闭
-
5、同样进入解压目录,执行
redis-cli -h 127.0.0.1 -p 6379
命令。进入到如下界面就代表连接成功了 -
6、然后进行简单的调试:键入命令
set name sjt
- 这里注意,输入
set
以后它会有提示,我们不用管,直接空格
+key
+空格
+value
然后直接回车就OK
- 这里注意,输入
-
7、在使用
get name
来获取name的值 -
8、之后我们来设置密码,键入命令:
CONFIG SET requirepass "root"
这里我们设置密码为root,如果你想设置空密码,直接CONFIG SET requirepass ""
留空就好。到这里我们需要注意,我们一直是在客户端工具中练习命令
先来看个表格:
文件名 说明 edis-benchmark.exe 基准测试 redis-check-aof.exe aof redischeck-dump.exe dump redis-cli.exe 客户端 redis-server.exe 服务器 redis.windows.conf 配置文件 然后,我们回到第一个打开的命令行,键入命令
redis-server.exe redis.windows.conf
,应该会出现如下的错误:
在这里我们只需要依次键入如下命令(设置了密码为root,没有设置密码的只需要125步):-
redis-cli.exe
-
shutdown
-
auth root
-
shotdown
-
exit
为什么会出现一个错误呢?因为我们设置了密码。那个错误的意思是:需要验证身份
- (错误)需要NOAUTH身份验证。
然后重新键入
redis-server.exe redis.windows.conf
命令,出现如下图示即可,可以看到redis的版本号和启动端口号,以及PID -
三、使用客户端工具
下载:链接:https://pan.baidu.com/s/1iVJkNJeMfMerZeRpRkS2og 提取码:agop
下载解压直接安装,选择安装目录以后直接下一步到finish。
软件界面如下:
点击connect to Redis server。
相信大家这几个字段都读的懂,可以先测试一下,然后OK。多嘴一下:localhost
和127.0.0.1
是一个意思
进来之后,可以双击,打开连接。可以看到我们之前存的值
在redis-cli工具中继续设置一些值。
在工具中点击reload即可
工具还支持命令行模式。
也支持修改key的名字,之前的name3被我用工具修改为了4,同时在我们之前的第二个命令行中也可以get到
其他的一些操作需要大家自行去开发了~
四、Redis基础知识介绍
-
1、概念
-
Redis 是一个使用 ANSI C 编写的开源、支持网络、基于内存、可选持久性的键值对存储数
据库。 -
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
-
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
-
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。 由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
-
-
2、Redis的特性
-
速度快,完全基于内存
-
支持多种数据类型
- 支持8种数据类型:String、Hash、List、Set、 SortSet、Bitmaps、HyperLogLog、GEO;
-
功能丰富
- 丰富的API,如可设置键过期,存在即设置(这可以用来解决分布式锁问题),基于发布订阅可实现简单的消息队列,通过Lua创建新命令,具有原子性,管道(pipeline)功能,解决网络开销;
-
服务器简单
- 开源代码优雅,容易阅读源码,采用单线程模型,避免并发问题,redis自己实现了多路复用;
-
客户端语言版本多
- 如Java、Php、Go
-
支持多种持久化方式
- RDB和AOP,这两种持久化深入分析请看:https://blog.csdn.net/u014229282/article/details/81121214
-
支持集群部署
- 支持主从复制,高可用集群,内部集群方式与Memcache做集群实现不一样的机制。
-
使用C语言实现,基于非阻塞的 IO 多路复用机制,网络层使用epoll解决高并发问题;
-
单线程模型避免了不必要的上下文切换及竞争条件;
-
-
3、Redis能做什么
-
缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效;
-
排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定;
-
计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
注:限速器也是对请求限流的一种实现方式。
-
好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能;
-
简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
-
Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。
-
-
4、Redis不能做什么
- Redis感觉能干的事情特别多,但它不是万能的,合适的地方用它事半功倍。如果滥用可能导致系统的不稳定、成本增高等问题。
- 比如,用Redis去保存用户的基本信息,虽然它能够支持持久化,但是它的持久化方案并不能保证数据绝对的落地,并且还可能带来Redis性能下降,因为持久化太过频繁会增大Redis服务的压力。
- 简单总结就是数据量太大、数据访问频率非常低的业务都不适合使用Redis。数据太大会增加成本,访问频率太低,保存在内存中纯属浪费资源。
-
5、其他
五、Redis与 Memcached 区别
- 1、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
- 2、Redis 支持数据的备份,即 master-slave 模式的数据备份。
Redis Cluster 是一个实现了分布式且允许单点故障的 Redis 高级版本,它没有中心节点,具有线性可伸缩的功能。Memcached 本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现 Memcached 的分布式存储。 - 3、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- 4、内存管理机制不同:Memcached 默认使用 Slab Allocation 机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value 数据记录,以完全解决内存碎片问题。Memcached 的内存管理制效率高,而且不会造成内存碎片,但是它最大的缺点就是会导致空间浪费。因为每个 Chunk 都分配了特定长度的内存空间,所以变长数据无法充分利用这些空间。Redis 采用的是包装的 malloc/free,相较于 Memcached 的内存管理方法来说,要简单很多。