Redis系列(一):小试牛刀
引言
随着互联网的高速发展,传统的关系数据库(如MySQL、Microsoft SQL Server等)已不能满足日益增长的业务需求,如商品秒杀、抢购等及时性非常强的功能,随着应用高并发的访问,会造成系统数据库崩溃,为了解决此种情况,需要引用一个缓存中间件,市面上比较常用的缓存中间件有Redis 和 Memcached,他们各自有自己的优缺点,但一般互联网公司大都采用MySQL + Redis的方式进行架构,本文主要介绍Redis的概念及安装配置。
简介
概念
Redis(Remote Dictionary Server ) 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。
传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。
它和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,redis在3.0版本推出集群模式。
Github 源码:https://github.com/antirez/redis
Redis 官网:https://redis.io/
特点、优势
- k、v键值存储以及数据结构存储(如列表、字典)
- 所有数据(包括数据的存储)操作均在内存中完成
- 单线程服务(这意味着会有较多的阻塞情况),采用epoll模型进行请求响应,对比nginx
- 支持主从复制模式,更提供高可用主从复制模式(哨兵)
- 去中心化分布式集群
- 丰富的编程接口支持,如Python、Golang、Java、php、Ruby、Lua、Node.js
- 功能丰富,除了支持多种数据结构之外,还支持事务、发布/订阅、消息队列等功能
- 支持数据持久化(AOF、RDB)
对比memcache
- memcache是一个分布式的内存对象缓存系统,并不提供持久存储功能,而redis拥有持久化功能
- memcache数据存储基于LRU(简单说:最近、最少使用key会被剔除),而redis则可以永久保存(服务一直运行情况下)
- memcache是多线程的(这是memcache优势之一),也就意味着阻塞情况少,而redis是单线程的,阻塞情况相对较多
- 两者性能上相差不大
- memcache只支持简单的k、v数据存储,而redis支持多种数据格式存储。
- memcache是多线程、非阻塞IO复用网络模型,而redis是单线程IO复用模型
安装Windows版本
Redis的windoms版下载地址:https://github.com/microsoftarchive/redis/releases。
下载自己需要的版本,如下图(msi是安装版本,zip是解压版):

下载zip到本地解压(笔者解压目录为D:\Program Files\Redis),目录如下:

开启服务,运行CMD,切换到解压目录,执行如下命令(并设置最大内存):
redis-server.exe redis.windows.conf --maxmemory 200M
效果如图所示:

开启命令行客户端,执行如下命令:
redis-cli.exe
添加和查询Key-Value,执行如下命令:
#设置键值
set key value
#获取键值
get key
查询和设置密码,执行如下命令:
#查询密码
config get requirepass
#设置密码
config set requirepass 密码
输入密码,执行如下命令:
auth 密码
以上几个命令,演示如下图所示。

注册和卸载服务,执行如下命令:
#注册安装服务
redis-server --service-install redis.windows.conf --loglevel verbose
#卸载服务
#redis-server --service-uninstall
执行效果,如下图:

注册完成后,可以在计算机服务中看到该服务,如下图所示。
开启服务后,可以直接用命令行客户端进行连接。
总结
本文简单的介绍了Redis的背景、概念及Windows版本的安装及测试,在后续博文中,将继续讲解Redis的相关内容,如果本文对你有所帮助,就是我写作的动力!感兴趣的朋友可以加关注,欢迎留言交流!
Redis系列(一):小试牛刀的更多相关文章
- Redis系列之key操作命令与Redis中的事务详解(六)
序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...
- Redis系列(2)之数据类型
Redis系列(2)之数据类型 <Redis系列(1)之安装>中介绍了Redis支持以下几种数据类型,那么本节主要介绍学习下这几种数据类型的基本操作 字符串类型,string 散列类型,h ...
- Redis系列(1)之安装
Redis系列(1)之安装 由于项目的需要,最近需要研究下Redis.Redis是个很轻量级的NoSql内存数据库,它有多轻量级的呢,用C写的,源码只有3万行,空的数据库只占1M内存.它的功能很丰富, ...
- Redis系列整理
0.Redis系列-安装部署维护篇 1.Redis系列-远程连接redis并给redis加锁 2.Redis系列-存储篇string主要操作函数小结 3.Redis系列-存储篇list主要操作函数小结 ...
- Python操作redis系列之 列表(list) (四)
# -*- coding: utf- -*- import redis r =redis.Redis(host=,password="ZBHRwlb1608") 1. Lpush ...
- redis 系列25 哨兵Sentinel (高可用演示 下)
一. Sentinel 高可用环境准备 1.1 Sentinel 集群环境 环境 说明 操作系统版本 CentOS 7.4.1708 IP地址 172.168.18.200 网关Gateway 1 ...
- redis 系列14 有序集合对象
一. 有序集合概述 Redis 有序集合对象和集合对象一样也是string类型元素的集合,且不允许重复的成员.不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员 ...
- Python操作redis系列之 列表(list) (五)(转)
# -*- coding: utf-8 -*- import redis r =redis.Redis(host=") 1. Lpush 命令将一个或多个值插入到列表头部. 如果 key 不 ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Redis系列(一):Redis的简介与安装
原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...
随机推荐
- Web 通信技术 ——跨文档信息传输(JavaScript)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.html * 作者:常轩 * 微信公众号:Worldh ...
- PyQt5之俄罗斯方块
上个礼拜有个需求,对csv里的数据按条件进行拆分计算.一想到要做计算,少不了pandas.还有个要求最好是生成命令行工具或者带有界面. 于是尝试下,使用PyQt5做了个简单的UI界面给程序包个壳子,然 ...
- 死磕Lambda表达式(二):Lambda的使用
城市就是森林,每一个男人都是猎手,每一个女人都是陷阱.--<三体> 在哪使用Lambda表达式? 在上一篇文章(传送门)中介绍了Lambda表达式的基本语法,其中的举了一个Lambda表达 ...
- 丰富图文详解B-树原理,从此面试再也不慌
本文始发于个人公众号:TechFlow,原创不易,求个关注 本篇原计划在上周五发布,由于太过硬核所以才拖到了这周五.我相信大家应该能从标题当中体会到这个硬核. 周五的专题是大数据和分布式,我最初的打算 ...
- docker部署tensorflow serving以及模型替换
Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...
- SpringBoot图文教程14—SpringBoot集成EasyExcel「上」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- 第六章、Vue项目预热
6-5. (1). (2).引入reset.css及border.css (3).解决手机点击延迟300ms的问题 a.安装 b.引入fastclick 6-2.项目的整体架构 src--->整 ...
- 基于@vue/cli 的构建项目(3.0)
1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...
- 配置ubunto 流量使用限制 python 实现简单 http server
很多ubunto 都有流量限制,使用流量.如每天使用200M ,超过了就要提示信息 原理,在本机 开一个 http 服务, 显示错误信息,哪流量使用完以后,使用 iptables 将 流量转发到 本机 ...
- Fortify Audit Workbench 笔记 Cross-Site Scripting-Persistent
Cross-Site Scripting: Persistent Abstract 向 Web 浏览器发送非法数据会导致浏览器执行恶意代码. Explanation Cross-Site Script ...