基础知识
redis默认有16个数据库Redis的瓶颈是根据机器的内存和网络带宽。
为什么单线程还可以这么快?
redis是c语言写的,官网提供的性能数据
1s 11万读取
1s 8万写入
误区:
- 高性能的服务器一定是多线程的
- 多线程一定比单线程效率高
CPU—>内存—>硬盘
核心:redis将所有的数据都放入内存中,所以用单线程去操作效率是很高的,多线程(CPU上下文会切换,十分耗时),对于内存系统,没有上下文切换效率会很高,多次读写都是在一个CPU上的,没有线程调度的耗时
五大数据类型
基础命令
1 | # 切换数据库 |
String
1 | 追加key存储的value字符串 |
List
可以给其设置一个使用规则,则可以将其实现栈或者队列的功能
1 | 设置和取值 |
分析可知这里的lpush是头插入,也就是left插入,那与之对应的肯定还有个尾插入,即right插入,但是啊只有LRANGE操作来取得集合里的数据,没有RRANGE操作
1 | 127.0.0.1:6379> rpush list v1 v2 v3 |
该List实质上是使用链表实现的
栈:出栈(Lpop)入栈(Lpush)== 出栈(Rpop) 入栈(Rpush)
队列:出队(Lpop)入队(Rpush)== 出栈(Rpop) 入栈(Lpush)
Set
该集合的特点是:无序不重复
1 | 添加一个元素 |
Hash
Map集合,key-Map集合
1 | # hset key field value |
Hashmap适合存储对象
Zset(有序列表)
1 | # 添加值 这个score相当于权重,用来排序 |
注:以上命令只是常用命令,更多命令可以在官网查看
英文官网地址:https://redis.io/
中文官网地址:http://www.redis.cn/