redis是什么?
(当下最热门的nosql之一,也被称谓结构化数据库)
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。支持多种数据类型,支持跨语言的api。
redis能干吗?
1、内存存储,持久化,内存是断电即失的,所以持久化很重要(rdb,aof)
2、用于告诉缓存、效率高。
3、发布订阅系统。
4、地图信息分析。
5、计数器(浏览量)
特性:
1、多样数据类型
2、持久化
3、集群
4、事务。
官网:https://redis.io/
https://www.redis.cn/
Nosql的类型
-
kv健值对:
新浪:redis
美团:redis+tair
阿里百度:redis+memecache -
文档型数据库
** mongodb** ,是非关系型数据库功能最丰富,最像关系型数据库的。
- 列存储数据库(分布式文件系统/Hbase)
- 图关系数据库(存放关系的文件系统)
四种数据库类型对比:
set name xxxx设置基本key value
get name获取key值
redis启动服务、启动客户端
redis-server kconfig/redis.conf
使用redis-cli客户端测试连通性~~~
redis-cli -h xxxx -p 6379 使用客户端连接测试
–ping 测试连通性
pong
key * 查看所有key值
redis相关命令
- 查看redis服务是否开启?ps -ef | grep redis
- 关闭redis服务? shutdown > 退出exit
redis-benchmark官方自带的压力测试工具
举例:测试100个并发,100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
如何查看这些分析呢?
10万并发,100个并发客户端,每次写入3个字节,只保证一台服务器处理这些请求,也就是单机性能。所有请求在3ms内完成,每一秒处理59737次请求。
redis默认有16个数据库,配置文件在redis.conf配置文件中database 16个,默认是使用的第0个,可以使用select进行切换数据库,查看数据库大小DBSIZE, 查看所有key,key * , 清空当前数据库flushdb。
flushall删除所有数据库
单线程的redis为什么这么快???
- redis是单线程,基于内存操作的,cpu不是redis的性能瓶颈,是根据服务器的内存和网络带宽决定的,使用单线程。。
- redis单线程为什么这么快?redis是c语言写的,每秒的10万➕qps,不比Memecache差,为什怎么快呢?
核心:redis是将所有数据全部放在内存中的,所以单线程去操作是效率最高的,对于内存系统来说没有上下文切换cpu,效率就是最高的。redis多次读写都是在一个cpu上进行的
五大数据类型
- redis-key
查看当前key的类型 type name