1.redis 介绍
开源
基于键值对的存储服务系统 java map / python Dict /Ruby…
多种数据结构 /字符串/哈希/列表/集合/有序集合
高性能、功能丰富
谁在使用?
GitHub twitter(社交网络) stackOverflow
Alibaba group baidu meituan sohu
Redis特性
1.速度快(每秒10w OPS)
Redis的所有数据都是存放在内存中的
Redis是用C语言实现的
Redis使用了单线程架构, 预防了多线程可能产生的竞争问题
2.持久化
通常看, 将数据放在内存中是不安全的, 一旦发生断电或者机器故障,
重要的数据可能就会丢失, 因此Redis提供了两种持久化方式: RDB和AOF, 即可以用两种策略将内存的数据保存到硬盘中(如图1-1所示) , 这样就保证了数据的可持久性.
3.多种数据结构
它主要提供了5种数据结构: 字符串、 哈希、 列表、 集合、 有序集合
另外三种数据结构
BitMaps ;位图
HyperLogLog:超小内存唯一值计数
GEO:地理信息定位
4.支持多种编程语言
5丰富的功能
提供了键过期功能, 可以用来实现缓存
提供了发布订阅功能, 可以用来实现消息系统
提供了简单的事务功能, 能在一定程度上保证事务特性。
6.简单稳定
首先, Redis的源码很少,其次, Redis使用单线程模型,Redis不需要依赖于操作系统中的类库.
7.主从复制
Redis提供了复制功能, 实现了多个相同数据的Redis副本(如图1-2所
示) , 复制功能是高可用,分布式Redis的基础.
8.高可用,分布式
应用方向
1.缓存:Redis提供了键值过期时间设置
用户–>App Server(java tomcat, PHP apache) –>cache(redies)–>storage
2.排行榜系统:Redis提供了列表和有序集合数据结构
3.计数器应用:Redis天然支持计数功能而且计数的性能也非常好, 可以说是计数器系统的重要选择。
4.社交网络:传统的关系型数据不太适合保存
这种类型的数据, Redis提供的数据结构可以相对比较容易地实现这些功
能。
5.消息队列系统:Redis提供了发布订阅功能和阻塞队列的功
能, 虽然和专业的消息队列比还不够足够强大, 但是对于一般的消息队列功能基本可以满足。
2.Redis 安装(Linux)
wget http://download.redis.io/releases/redeis-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(编译和安装)
src /usr/local/bin目录下:
redis-server: redis 服务器
redis-cli: redis 命令行客户端
redis-benchmark:性能测试
redis-check-aof:Aof文件修复工具
redis-check-rdb: rdb文件修复工具
redis-Sentinel
2.1启动方式
redis/ (解压后的文件)
1.直接使用redis-server (通过默认配置启动)
2.动态参数启动
redis-server –port 6380(默认启动窗口)
3.配置文件启动
【cd /opt /soft
cd redis
mkdir config
cp redis.conf config/
mv redis.conf redis-6381.conf(重命名)
vim redis-6381.conf :q(退出)
cat redis-6381.conf |grep -v “#” | grep -v “^$” (不查看空格和注释文件)
cat redis-6381.conf |grep -v “#” |grep -v “^$” >redis-6382.conf(重定向到新文件中)
rm -rf redis-6381.conf(-r :子目录及子目录中所有档案删除 -f:强行删除file,系统不再提示)
vim redis-6382.conf
( daemonize YES
dir “/opt/soft/redis/data”
logfile “6382.log”
剩下的可以删 )
cd /opt/soft/redis
mkdir data
redis-server config/redis-6382.conf
】
三种方式比较
一般选择配置文件方式启动,redis是单线程,可以使用不同的端口区分开
ps -ef | grep redis-server(查看redis 服务的进程)
2.2客户端的连接
//任意目录下
redis-cli -h 127.0.0.1 -p 6379
set hello world —-ok
get hello —-“world”
exit
2.3Redis 客户端返回值
状态回复: ping—-PONG
错误回复:(error)
整数回复:(Integer)
字符串回复:“world…”
多行字符串回复:1)“world”
2)“hello”….
2.4常用配置
daemonize:是否是守护进程(默认NO)
port: Redis 对外端口号(默认6379)
logfile:Redis 系统日志
dir:Redis 工作目录(logfile 持久化文件存放位置)