Redis 入门知识
Redis 的前世今生
Redis的诞生于2008年,由Salvatore Sanfilippo开发。最初作者在开发一个网站时,需要实现一个高性能的队列功能,在使用Mysql无果后,决定自己造一个轮子。自从Salvatore Sanfilippo将 Redis源码在GitHub上开源后,就一发不可收拾。许多重量级的公司将Redis应用到他们的产品中,如国外的Twitter,Instagram,StackOverFlow, Github等,国内的如新浪微博,阿里巴巴,腾讯,百度,搜狐,优酷土豆等。
Redis 的特性
速度快
- redis是使用C语言实现的,并且源码实现的足够好。
- redis基于内存存放数据,操作数据相对快。
- redis使用单线程架构,没有多线程的切换和死锁。
基于键值对数据结构服务器
redis 所有数据以键值对的方式存放,键是字符串类型,但键所对应的值除了字符串类型,还可以是哈希,列表,集合,有序集合。
丰富的功能
- 提供了键过期功能,可以实现缓存
- 提供发布订阅功能(基于列表的阻塞取值),可以实现消息系统
- luo基本,可以扩展新的redis命令
- 提供简单的事务功能,将有关联性的操作放在一起执行
- 提供流水线(Pipeline)功能,客户端可以将一批命令一次性传到Redis,减少网络开销
简单稳定
- 代码量比其他nosql少
- 单线程模型
- 不依赖其他类库,redis自己实现了事件处理的相关功能
客户端语言多
支持Java,PHP,Python,C, C++,Nodejs
持久化
提供了RDB和AOF两种持久化方式,将内存的数据保存到硬盘中。
主从复制
高可用和分布式
- 通过redis sentinel实现高可用,保证redis节点的故障发现和故障自动转移。
- 通过redis cluster实现分布式部署
Redis 的应用场景
- 缓存
- 排行榜系统
- 计数器应用
- 社交网络
- 消息队列系统
Redis 如何安装
redis不推荐在windows系统上部署,因为redis的许多特性都是与系统相关的。redis已在linux上有许多成功案例,绝大多数公司都使用linux系统开发和运维。
Linux 系统下安装
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make
$ make install
注意:这里使用软连接将redis-3.0.7 连接到redis目录,相当于做了redis-3.0.7的快捷方式,以后更新版本时,可以替换新版本的软连接。
常用命令
redis-cli # 是redis的客户端启动命令,最主要功能是连接redis-server,通过tcp网络协议,将要执行的命令发送给redis-server,并取回执行结果
# 默认连接127.0.0.1:6379的redis-server。可以像这样redis-cli get key 直接运行单条命令,或者通过redis-cli进入交互模式
redis-cli --help
redis-cli 3.0.7
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <hostname> Server hostname (default: 127.0.0.1).
-p <port> Server port (default: 6379).
-s <socket> Server socket (overrides hostname and port).
-a <password> Password to use when connecting to the server.
-r <repeat> Execute specified command N times.
-i <interval> When -r is used, waits <interval> seconds per command.
It is possible to specify sub-second times like -i 0.1.
-n <db> Database number.
-x Read last argument from STDIN.
-d <delimiter> Multi-bulk delimiter in for raw formatting (default: \n).
-c Enable cluster mode (follow -ASK and -MOVED redirections).
......
Examples:
cat /etc/passwd | redis-cli -x set mypasswd
redis-cli get mypasswd
redis-cli -r 100 lpush mylist x
redis-cli -r 100 -i 1 info | grep used_memory_human:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
redis-cli --scan --pattern '*:12345*'
redis-server # redis-server的启动命令,不带参数直接运行,会将redis-server 运行在本机的127.0.0.1:6379上。
# 比较常用的是redis-server ./redis.conf 的方式启动redis-server,其中,redis.conf是Redis目录下一个默认配置文件,我们一般会以此为模板,将其修改为自己需要的启动配置文件。
redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf --sentinel
redis-cli shutdown # 停止Redis服务,停掉的是127.0.0.1:6379 的redis-server服务
#redis在停止服务时,默认会生成持久化文件。我们可以通过redis-cli shutdown nosave | save 来控制
# 关闭Redis时,是否生成持久化文件。
以上内容参考 Redis开发与运维 一书
Redis 入门知识的更多相关文章
- redis入门知识汇总
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...
- Redis入门指南
随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...
- Redis入门 (CentOS7 + Redis-3.2.1)
1. 编译安装1.1 下载redis # cd /tmp/# wget http://download.redis.io/releases/redis-3.2.1.tar.gz# tar zxvf r ...
- 超强、超详细Redis入门教程【转】
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
- Redis(二):Redis入门介绍
Redis入门介绍目录导航: 入门概述 VMWare + VMTools千里之行始于足下 Redis的安装 Redis启动后杂项基础知识讲解 入门概述 是什么 Redis:REmote DIction ...
- 超详细Redis入门教程【转】
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...
- Redis入门手册
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...
- redis入门(一)
目录 redis入门(一) 前言 特性 速度快 简单稳定 丰富的功能 历史 历史版本 安装与启动 安装 数据类型与内部编码 数据结构 内部编码 常用API与使用场景 常用命令 字符串 列表 哈希 集合 ...
- redis入门(二)
目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...
随机推荐
- 2019.01.04 洛谷 P4721 【模板】分治 FFT
传送门 如同题目所描述的一样,这是一道板题. 题意简述:给你一个数组g1,2,...ng_{1,2,...n}g1,2,...n并定义f0=1,fi=∑j=1ifi−jgjf_0=1,f_i=\su ...
- Firefox table 不居中解决办法 解决火狐层或 table 不居中
Firefox table 不居中解决办法: table 使用 align="center" ,IE正常,Firefox 却是居左了,网上有各种解决的办法,比如在table外面再套 ...
- pat 甲级 1086(树的遍历||建树)
思路1:可以用建树来做 由于是先序遍历,所以直接先序建树就行了. #include<iostream> #include<cstdio> #include<cstring ...
- Codeforces Round #546 (Div. 2) D 贪心 + 思维
https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则, ...
- boost-数据类型之auto、any、tuple、variant
1.auto.decltype auto是C++11中的关键字,它可以通过类型推导自动得到变量或对象的类型,需要注意的是auto会忽略引用,因为引用其实就代表原对象: #include <v ...
- 20169207《Linux内核原理与分析》第六周作业
这周的作业同样分为两部分,第一部分的学习MOOC第四节[扒开系统调用的三层皮],并结合实验楼的实验四深入学习.第二部分阅读学习教材「Linux内核设计与实现 (Linux Kernel Develop ...
- 04:第一个OC类
1.类与对象的关系 面向对象的核心就是对象,那怎么创建对象? OC中创建对象比较复杂, 首先要理解一个概念叫做类. 现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这 ...
- 数据压缩之经典——哈夫曼编码(Huffman)
(笔记图片截图自课程Image and video processing: From Mars to Hollywood with a stop at the hospital的教学视频,使用时请注意 ...
- 8.Layout布局应用
- stm32f103_高级定时器——输入捕获/输出比较中断+pwm=spwm生成
****************************首选我们了解一下它们的功能吧********************************************************** ...