Redis入门
概述
Redis(Remote Dictionary Server ),即远程字典服务
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
支持大多数语言。
使用NoSQL技术
特点
- 内存存储,持久化(rdb,aof)
- 效率高,可用于高速缓存。
- 支持集群
- 支持事务
安装
宝塔安装。简单快捷
连接
redis-cli -p 6379
关闭
shutdown
测试
//宝塔在 www/server/redis/src下
./redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000
注:网上教程中命令为:
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000
无法运行
加./
正常运行
基础知识
-
redis默认有16个数据库,默认使用第0个。(0-15)
-
redis是单线程的,但是redis6开始支持多线程(默认单线程)
简单命令
select 1 //更改为对应编号的数据库
DBSIZE //查看当前数据库大小
set name xxx //设置一个key为name,值为xxx
get name //返回name的值
exists name //判断这个key是否存在,存在返回结果1,不存在返回0.
move name 1 //把name从当前数据库移动到1号数据库中
expire name 10 //设置 name 10秒后过期
ttl name //显示name剩余存活时间
type name //查看name的类型
keys * //显示所有的key
flushdb //清空当前数据库
flushall //清空所有数据库
redis为什么快?
1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
4、使用多路I/O复用模型,非阻塞IO;
5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;