- Redis:是一款高性能的NOSQL系列的非关系型数据库
1. 关系型数据库:
* 数据之间有关联关系
* 数据存储在表中(硬盘上)
2. 非关系数据库:
* 数据与数据之间没有关联关系
* 数据存储在内存中
3. 关系型数据库与非关系型数据库:
* 一般会将数据存储在关系型数据库中,在非关系型数据库中进行备份
4. Redis:由C语音开发的一款开源的高性能键值对数据库,具有强大的高并发执行能力
a. 目前Redis支持的键值数据类型:
1. 字符串类型:String
2. 哈希类型:hash
3. 列表类型:list
4. 集合类型:set
5. 有序集合类型:sortedset
b. 应用场景
1. 缓存(数据查询,短链接,新闻内容等)
2. 聊天室的在线好友列表
3. 任务队列。(秒杀,抢票等)
4. 应用排行榜
5. 网站访问统计
6. 数据过期处理
7. 分布式集群架构中的session分离
5. 使用:
a. 下载压缩包
https:
http:
b. 解压即可使用:
* redis.windows.conf:配置文件
* redis-cli.exe:redis客户端
* redis-server.exe:服务器端
- Redis命令
1. Redis数据结构:
* key-value结构
* key都是字符串类型
* value可以为5中类型
2. 存储/获取数据:常用命令
a. 字符串类型value:
1. 存储:key相同会发生覆盖
set key value
2. 获取:
get key
3. 删除:
del key
b. 哈希类型:
1. 存储:
hset key filed value
2. 获取:
hget key filed
hgetall key
3. 删除:
hdel key field
c. 列表类型:
1. 存储:
lpush key value
rpush key value
2. 获取:
lrange key start end
3. 删除:
lpop key
rpop key
d. 集合类型:
1. 存储:
sadd key value
2. 获取:
smembers key
smembers key value
3. 删除:
srem key value
e. 有序集合:每个元素关联一个double类型的分数,用于排序
1. 存储:
zadd key score value
2. 获取:
zrange key start end
3. 删除:
zrem key value
3. 通用命令:
a. keys *
b. type key
c. del key
- Redis持久化:
1. redis是一个内存数据库,当redis服务器关闭前,需要将内存中的数据持久化保存到硬盘中
2. redis持久化机制:
a. RDB:默认方式,在一定时间内,检测key的变化情况,满足一定数量便持久化数据
1. 修改redis.windows.conf文件:
save 900 1
save 300 10
save 60 10000
2. 需要命令行启动并指定配置文件:
cmd:> redis-server.exe redis.windows.conf
b. AOF:日志记录方式,可以记录每一条命令的操作。每一次命令操作后,持久化数据
1. 修改redis.windows.conf文件:
appendonly yes
2. 配置持久化频率:
appendfsync always
appendfsync everysec
appendfsync no
- Jedis:java操作redis数据库的工具
1. 下载Jedis的相关jar包
jedis-2.7.0.jar
commons-pool2-2.3.jar
2. 使用步骤:
a. 获取连接:
Jedis jedis = new Jedis("主机IP","端口号");
b. 操作:
成员方法与redis数据库操作命令一致
get/set/del
hget/hset/hdel/hgetAll
...
c. 关闭连接:
jedis.close();
3. 常用特殊方法:
a. setex(key, seconds, value)
将key:value在数据库中存活seconds秒
4. Jedis连接池:
a. 使用步骤:
1. 创建JedisPool连接池
JedisPool jedisPool = new JedisPool();
* 使用JedisPoolConfig配置对象创建自定义配置的JedisPool连接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(xxx);
config.setMaxIdle(xxxx);
...
JedisPool jedisPool = new JedisPool(config, host, port);
2. 调用成员方法getResource()获取连接
Jedis jedis = jedisPool.getResource();
3. 调用close()归还连接
5. 使用redis缓存:
a. 一些不经常改变的数据可以从关系型数据库查询后,备份在redis中
* 但是,这些数据的增删改操作后(成员方法中),必须清空这些数据在redis的缓存
* 这样,一旦没有缓存,就会重新查询数据库,并且备份缓存