数据库 redis
目前一个基本的互联网项目
1. nosql 概述
传统RDBMS 和 NoSQL
什么是nosql?
not only sql ,指非关系型数据库
关系型数据库:表格,行,列
为什么使用nosql?
- 大数据,大规模高并发,是关系型数据库难以解决的瓶颈问题
- 许多数据难以用关系型数据库的行列这种固定形式来表示:社交网络,地理位置
nosql 四大分类
- K-V对存储数据库: redis,Tair,memecache
- 文档数据库:MongoDB,couchDB
基于分布式文件存储的数据库,处理大量文件,介于关系型数据库和非关系型数据库之间的,是非关系型中最像关系型的数据库。 - 列存储数据库:HBase
- 图形数据库:Neo4j,InfoGrid
2. Redis 入门
Redis (remote dictionary server 远程字典服务),Redis 是一个高性能的key-value数据库
可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的
为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
三个作用:做数据库存数据,做缓存,做消息中间件 mq
1. redis 安装 启动 简单使用
redis 一般推荐在 Linux 服务器上进行开发
- windows 安装
- github 上下载安装包
- 解压到自己电脑的环境目录下就可以了:解压后,包含:服务器程序,客户端程序等
- 可以启动了,双击运行 服务程序就启动了
- 默认端口号6379.运行客户端,就可以连接上服务端了。
- linux 安装
- 下载安装包
- 下载安装包
-
连接远程linux 服务器,把安装包放上去,进行解压,解压到 /opt
tar -zxvf redis-6.0.6.tar.gz
-
查看系统是否安装gcc,
gcc --version
若出现如上图所示gcc版本信息,则说明已经安装,否则,执行如下命令进行安装:sudo apt-get install gcc
- 安装redis(在linux中,刚才解压的是程序,还需要进行安装)
在刚才的解压目录下,执行以下两条指令:
make
make install
- 安装redis(在linux中,刚才解压的是程序,还需要进行安装)
-
待程序执行完成后,redis相关配置文件会自动(默认)安装到/usr/local/bin/目录下:
-
将redis解压目录下的redis.conf 复制到 安装目录下的redisconf(需要创建)文件夹下。以后启动redis就用redisconf下的配置文件,原解压目录下的原封不动。
-
redis 默认不是后台运行的,需要设置
采用vim 命令编辑redis.conf,将“daemonize no”修改为“daemonize yes”,设置为后台进行运行,修改完成后后保存退出。 -
启动redis服务器 和客户端程序,进行连接测试
-
查看redis进程是否启动
-
关闭redis
-
进程已关闭
2. redis-benchmark 性能测试工具
官方自带的压力测试工具
redis-benchmark 测试命令
例如:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000
3. redis 基础知识
- redis默认有16个数据库0-15,默认使用第0个,可以使用 select进行切换
- redis是单线程的,基于内存操作,是很快的。CPU不是redis的性能瓶颈(多线程,CPU上下文切换,会耗时),redis的瓶颈是不同机器的内存和网络带宽
- 基本操作命令 (可以去官网查看命令)
select 1 选择第1数据库
DBSIZE 查看数据库大小
set key value 添加数值对
get key 获取value值
keys * #查看所有key
flushdb 清空当前数据库
FLUSHALL 清空所有数据库
EXISTS key 查看当前key是否存在
EXPIRE key time 设置key 过期时间
move key 移除当前key
ttl key 查看当前key剩余时间
type key 查看key类型
4. redis 五大数据类型
- String 字符串
append 追加
strlen 长度
incr 自增1
decr 自减1
INCRBY key 10 增加10
DECRBY key 10 减少10
getrange key 1 3 截取字符串