NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,
泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储
Redis(Re
mote Di
ctionary S
erver ),即远程字典服务
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis官网:https://redis.io/
Redis中文网:http://www.redis.cn/
下载地址:https://github.com/tporadowski/redis/releases。
下载完成后解压文件
开启Redis 运行服务即可,双击
出现
使用Redis客户端连接Redis,双击
出现
2. 将安装包上传到服务器
3. 解压Redis的安装包
解压完成
4. 安装基本的环境
yum install gcc-c++
make
make install
注意!!!!
如果Redis版本为6.0以上,需要升级gcc
# 先检查gcc的环境
gcc -v
# 查看gcc版本
yum -y install centos-release-scl
# 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc- c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#以上为临时启用,如果要长期使用gcc 9.1的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
# 进入redis解压文件
make
# 6.0的坑,gcc版本 9.0 以上
# 等待完毕
Make完毕后 进入redis目录下 我的是 /opt/redis-6.0.5
输入make install
make install
我们便找到了Redis的启动服务文件redis-server
和客户端redis-cli
# 创建一个目录
mkdir myconfig
# 将redis的配置文件复制一份到此目录下
cp /opt/redis-6.0.5/redis.conf myconfig
配置redis后台启动
# 进入Redis配置文件
vim redis.config
# 修改daemonize 后参数为 yes
[root@mycentos bin]# redis-server myconfig/redis.conf
# 启动redis服务 通过myconfig/redis.conf配置文件来启动
redis-cli -p 6379
ps -ef grep redis
shutdown
exit
# redis 性能测试的基本命令如下:
redis-benchmark [option] [option value]
注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。
实例
测试 100条并发 100000请求数的性能
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
Redis 有 16 个数据库
进入redis.conf查看
vim redis.conf
# 切换数据库 index为数据库索引 0-15
127.0.0.1:6379> select index
# 查看数据库大小
127.0.0.1:6379> dbsize
# 查看当前数据库所有的key
127.0.0.1:6379> keys *
# 清空当前数据库内容
127.0.0.1:6379> flushdb
# 清空全部数据库内容
127.0.0.1:6379> flushall
Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差!
为什么Redis这么快
1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
2、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗