Redis简介及安装
@[toc]
一、nosql介绍
1.NoSQL
-
NoSQL:一类新出现的数据库(not only sql)
它的特点: - 不支持SQL语法
- 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式
- NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
- NoSQL中的产品种类相当多:
- Mongodb
- Redis
- Hbase hadoop
- Cassandra hadoop
2.NoSQL和SQL数据库的比较:
-
适用场景不同:sql数据库适合用于关系特别复杂的数据查询场景,nosql反之
-
“事务”特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务
- 两者在不断地取长补短,呈现融合趋势
-
SQL数据库被称为关系型数据库(RDBMS),而NoSQL数据库被称为非关系型数据库或分布式数据库。
- SQL数据库是基于表的数据库,而NoSQL数据库则有基于文档的,键值对的,图形的或基于列式存储的数据库。
-
SQL数据库的数据结构必须事先先定义好,而NoSQL数据库的数据是动态无结构的。
- SQL数据库的负载能力是以增加硬件配置的垂直扩展方式来增加的,而NoSQL数据库的负载能力可以通过增加数据库服务器的数量来增加(属于水平扩展)。
-
SQL数据库是使用SQL(结构化查询语言)对数据进行定义和操作的,功能强大,语法统一。而NoSQL数据库是使用UnQL(无结构查询语言),其操作的对象主要是存储在集合中的文档,但UnQL语法不统一
,不同的NoSQL数据库语法各有不同。 - 常见的SQL数据库有:MySql,Oracle,Postgres,Sqlite,MS-SQL等。NoSQL常见的有:MongoDB,BigTable,Redis,Hbase,Neo4j等。
-
对于复杂的查询:SQL非常的擅长,而NoSQL则不擅长。因为NoSQL并没有执行复杂查询的标准接口
。相对于SQL的强大查询能力,NoSQL的查询能力就显得有点捉襟见肘。 - 对于所能存储的数据类型:SQL数据库并不太适合分层次的数据存储。 但是,
NoSQL数据库则可以很好的存储分层次的数据,因为它是以键值对的形式存储数据的,类似与JSON数据
。NoSQL数据库更倾向用于大数据。例如Hbase就是一个很好的例子。 - 对于基于大量事务的应用程序:SQL数据库非常适合,因为它更加稳定并且可以保证数据的原子性和一致性。而NoSQL对事务的处理能力有限。
-
在文档支持方面:所有SQL数据库的厂家对其数据库产品都有很好的支持,并且有许多专家可以帮你部署大型的SQL数据库扩展。而NoSQL现在仅有社区的支持,而可以帮助你部署大型NoSQL数据库扩展的专家也很有限
。 -
在属性方面:SQL数据库遵循ACID(即,原子性,一致性,隔离性,持久性)属性,而NoSQL数据库遵循的是CAP定理(即,一致性,可用性,分区容忍性)
。 -
对于数据库的分类:对于SQL数据库,基于商业渠道SQL数据库可分为开源或闭源产品。对于NoSQL数据库,基于存储数据的基本方式可分为图形数据库,键——值数据库,文档数据库,列式数据库,XML数据库
。
二、Redis
1.简介
-
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
。 - 从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
- Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色
2.Redis特性
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- 它也通常被称为数据结构服务器,
因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型
。 - Redis支持数据的备份,即master-slave模式的数据备份。
- 与传统数据库不同的是
Redis 的数据是存在内存中
的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。 - Redis为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。
3.Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
-
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
。 - 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
-
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性
。 - 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
-
支持数据的备份,即master-slave模式的数据备份
。
4.redis应用场景
-
用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库)
-
查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
- 可以在某些特定应用场景下替代传统数据库——比如社交类的应用
- 在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车
什么数据会存到redis数据库中
?
主要是热点数据,不会经常改变的,一般是常量
比如登录验证的cookie,购物车,历史浏览记录都(只要具有一定时间的生命周期)
比如首页的商品信息,一般不会变。
比如秒杀的商品信息,一般也不会变。
比如地图的经纬度信息,一般也不会变。
- 用户的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 List 结构来实现
- Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能(Set 类似与列表,但可自动排重的)
-
Redis不但提供了无需集合(Sets),还很体贴的提供了有序集合(Sorted Sets),因此,各种排行榜数据基本上都会使用Redis提供的Sorted Sets来实现
5.推荐阅读
三、redis安装
1.在线安装
- 直接输入命令
sudo apt-get install redis-server
安装完成后,Redis服务器会自动启动。
使用ps -aux|grep redis命令可以看到服务器系统进程默认端口6379
redis 2890 0.2 0.1 41872 6064 ? Ssl 14:17 0:07 /usr/bin/redis-server 127.0.0.1:6379
hzlarm 3222 0.0 0.0 11324 780 pts/2 S+ 15:02 0:00 grep --color=auto redis
- 使用netstat -nlt|grep 6379命令可以看到redis服务器状态
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
-
使用sudo /etc/init.d/redis-server status命令可以看到Redis服务器状态
2.下载安装包:
- 下载:打开redis官方网站,推荐下载稳定版本(stable)
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
-
解压tar xzf redis-5.0.5.tar.gz
- 复制:
推荐放到usr/local目录下sudo mv redis-5.0.5 /usr/local/redis
- 进入redis目录 cd /usr/local/redis/
- 生成:sudo make失败则 使用 sudo make MALLOC=libc后再sudo make
- 测试 sudo make test 这段运行时间会较长
-
安装:将redis的命令安装到/usr/bin/目录sudo make install
- 运行 redis-server
- 按ctrl+c停止
- 查看
cd /usr/local/bin
ls -all
redis-server redis服务器
redis-cli redis命令行客户端
redis-benchmark redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-rdb RDB文件检索工具
四、配置
1.配置
Redis的配置信息在/etc/redis/redis.conf下。
2.查看
sudo vi /etc/redis/redis.conf
3.绑定ip
绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1
4.端⼝,默认为6379
port 6379
5.是否以守护进程运⾏
如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
如果以⾮守护进程运⾏,则当前终端被阻塞
设置为yes表示守护进程,设置为no表示⾮守护进程
推荐设置为yes
daemonize yes
6.数据⽂件
dbfilename dump.rdb
7.数据⽂件存储路径
dir /var/lib/redis
8.⽇志⽂件
logfile /var/log/redis/redis-server.log
数据库,默认有16个 database 16
9.主从复制
# 类似于双机备份。
slaveof
参考资料
redis配置信息
五、服务端客户端操作命令
1.服务器端
-
服务器端的命令为redis-server
- 可以使⽤help查看帮助⽂档
推荐使⽤服务的⽅式管理redis服务
redis-server --help
- 启动
sudo service redis start
- 停⽌
sudo service redis stop
- 重启
sudo service redis restart
个人习惯
- ps -ef|grep redis 查看redis服务器进程
- sudo kill -9 pid 杀死redis服务器
-
sudo redis-server /etc/redis/redis.conf 指定加载的配置文件
2.客户端
-
客户端的命令为redis-cli
可以使⽤help查看帮助⽂档
redis-cli --help
-
连接redis
redis-cli
- 运⾏测试命令
ping
- 切换数据库
数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
select n
评论区