Redis简介
Redis是一个高性能的内存数据库,以key-value方式存储数据,可以作为缓存使用。
为什么使用缓存?
-
高并发
MySQL的连接数存在瓶颈,连接过大可能导致MySQL宕机
解决方法:
- 部署多个MySQL服务,主从复制
- 部署缓存,承担一部分的并发
-
高性能
基于内存,内存IO效率远远高于磁盘
Redis的特点:
- 性能高(读的速度是110000次/s,写的速度是81000次/s,单机redis支撑万级并发)
- 支持多种存储类型
- 丰富的特性(发布订阅、事务、过期策略等)
- 支持持久化
- 单线程 (避免上下文切换,线程同步问题)
Redis安装和使用
Linux安装
- 先安装gcc编译器,可以用来编译c、c++等代码
yum -y install gcc //-y表示自动安装
- 安装Redis
wget http://download.redis.io/releases/redis-3.2.5.tar.gz //下载redis安装包到usr/local
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
- BUG
使用 make MALLOC=libc 进行编译。MALLOC表示C语言中的动态分配内存函数,libc就是库文件
Windows安装
- 从官网下载redis的windows版本
- 解压
- 启动服务器端
- 启动客户端
Redis的配置
redis.conf
- 注释掉 bind 127.0.0.1
- 关闭保护模式 protected mode no
使用Redis
- 1、启动服务器 src中 ./redis-server …/redis.conf
- 2、启动客户端 src中 ./redis-cli
Redis的数据类型
Redis的数据以key-value方式存储。
数据类型有:
- string 字符串(简单的key-value数据,适合保存单个数据,如:用户数量、库存数、商品数)
- hash 哈希(适合保存复杂类型数据,如:用户对象)
- list 列表(链表结构,适合保存有序的、可重复的数据,如:商品列表、评论列表)
- set 无序集合(适合保存无序的,不可重复的数据)
- zset 有序集合(适合保存有序的,不可重复的数据)
字符串
set key value
get key
可以设置失效时间
set key value EX 10 //10秒钟之后失效
Hash
hash存储,一般可以用来存储Java中的一个完整的自定义对象。
//hmset是存储hash值的指令,
//user是当前hash的key
//name "zhangsan" age 23 sex "nan" 是 key对应的值
127.0.0.1:6379> hmset user name "zhangsan" age 23 sex "nan"
OK
//hmget获取hash中的某一个属性的值
127.0.0.1:6379> hmget user name
1) "zhangsan"
127.0.0.1:6379> hmget user age
1) "23"
//hgetall是获取hash中的所有属性对应的值
127.0.0.1:6379> hgetall user
1) "name"
2) "zhangsan"
3) "age"
4) "23"
5) "sex"
6) "nan"
List列表(有序列表)
采用的链表结构进行数据存储
lpush 从右向左添加
rpush 从左向右添加
lrange key start stop
//lpush用来存储一个列表的命令。interesting是列表的名称,"basketball"列表中的值
127.0.0.1:6379&g