Redis概述 ✍
什么是Redis
Redis是Remote Dictionary Server(远程字典服务器)的缩写,可以作为高效的缓存。
Redis使用C语言开发,将数据保存在内存中,可以看成是一款纯内存的数据库,所以它的数据存取速度非常快。
Redis通过键值对的形式来存储数据。Redis的Key只能是String类型,Value值则可以是String类型,Map类型、List(列表)类型、Set(集合)类型、SortedSet(有序集合)等类型。
为什么用Redis做缓存
相比于其他的键值对内存数据库,Redis有如下特点:
- 速度快。不需要等待磁盘IO,而是在内存之间进行数据存储和查询,速度非常快。缓存的数据总量不能太大,因为受到物理内存空间大小的限制
- 丰富的数据结构
- 单线程,避免了线程切换和锁机制的性能消耗 ,不过6.0后是多线程了
- 可持久化,支持RDB与AOF两种方式,将内存中的数据写入外部的物理存储设备
- 支持发布、订阅
- 支持Lua脚本
- 支持分布式锁
- 支持原子操作和事务
- 支持主从复制和高可用集群
- 支持管道,Redis管道是指客户端可以将多个命令一次性发送到服务器,然后由服务器一次性返回所有结果。管道技术的优点是,在批量执行命令的应用场景中,可以大大减少网络传输开销,提高性能
Redis安装启动
下载配置一下Redis
Linux服务器上:
下载:
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
解压
tar -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make MALLOC=libc (要求已安装gcc)
make install
修改redis.conf文件
> redis-server redis.conf 启动
> redis-cli -a password 连接
也可以在命令行关闭:
redis-cli -p 6379 -a your_password shutdown
压测工具:
redis-benchmark -h localhost -p 6379 -c 50 -n 10000
具体可用参数翻文档
Redis配置文件解读 ⚙
Redis数据类型 ✍
String字符串
Redis自己构建了简单的动态字符串SDS(类似ArrayList,预分配冗余空间),没有用c语言原生的。
String类型既可以存储文字,又可以存储数数字,还可以存储二进制数据。
127.0.0.1:6379> set foo name
OK
127.0.0.1:6379> mset f1 str f2 strr f3 strrr
OK
127.0.0.1:6379> get foo
"name"
127.0.0.1:6379> get f1
"str"
127.0.0.1:6379> mget f1 f2 f3
1) "str"
2) "strr"
3) "strrr"
127.0.0.1:6379> strlen f1
(integer) 3
127.0.0.1:6379> set n1 1.0
OK
127.0.0.1:6379> get n1
"1.0"
127.0.0.1:6379> set n2 1
OK
127.0.0.1:6379> incr n2
(integer) 2
127.0.0.1:6379> set bina1 101110
OK
127.0.0.1:6379> get bina1
"101110"
应用场景