Redis
1.概念:redis是一款高性能的NOSQL的非关系型数据库
区别:
关系型数据库
1.数据之间有关联关系
2.数据存储在硬盘的文件上
非关系型数据库
1.数据之间没有关联关系
2.数据存储在内存中
关系型与非关系型是互补关系,而非替代关系
缓存思想:
从缓存中获取数据:
有数据:直接返回
没数据:
1.从数据库查询数据
2.将数据放入缓存
3.返回数据
什么是Redis
Redis是用C语言开发的一个开源的高性能(key-value)数据库
数据类型:
1.字符串类型:string
2.哈希类型:hash
3.列表类型:list
4.集合类型:set
5.有序集合类型:sortedset
redis的应用场景
缓存(数据查询,短连接,新闻内容,商品内容等)
聊天室的在线好友列表
任务队列(秒杀、抢购、12306等)
应用排行榜
网站访问统计
数据过期处理(精确到毫秒)
分布式集群架构中session分离
2.下载安装
www.redis.net.cn
解压直接后使用
redis.window.conf:配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis服务器端
3.命令操作
1.redis的数据结构:
redis存储的是:key value格式的数据,其中key都是字符串,
value有五种数据结构
1.字符串类型:string
2.哈希类型:hash:相当于java的map格式
3.列表类型:list:相当于java的linkedList格式
4.集合类型:set:相当于java的hashSet格式
5.有序集合类型:sortedset:相当于java的linkedHashSet
2.字符串类型:string
1.存储:set key value
2.获取:get key
3.删除:del key
3.哈希类型:hash:相当于java的map格式
1.存储:hset key field value(命令 hash名 键 值)
2.获取指定:
hget key field
3.获取所有:
hgetall key
4.删除:hdel key field
4. 列表类型:list:相当于java的linkedList格式
1.添加:
1.lpush key value:将元素加入列表左边
2.rpush key value:将元素加入列表右边
2.获取:
lrange key start end:范围获取(-1是从做左的最后一个元素)
3,删除:
lpop key:删除列表最左边的元素,并将元素返回
rpop key:删除列表最右边的元素,并将元素返回
5.集合类型:set:相当于java的hashSet格式
1.存储:sadd key value
2.获取:smembers key 获取set集合中所有元素
3.删除:srem key value 删除set集合中的某个元素
6.有序集合类型:sortedset:相当于java的linkedHashSet
1.存储:zadd key score value
2.获取:zrange key start end
获取带分数的 zrange key start end withscores
3.删除:zrem key value
7.通用命令:
keys*:查询所有键
type key:获取键对应的value类型
del key:删除指定key
4.持久化
1.redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,
我们可以将redis中数据持久化到硬盘的文件中
2.持久化机制
1.RDB:默认方式,不需要配置
在一定的间隔时间中,检测key的变化,然后持久化
1.编辑redis.window.conf文件
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
修改redis配置后重启服务器:redis-server.exe redis.windows.conf
2.AOF(不推荐):日志记录的方式,记录每一条命令的操作,每一次命令操作后持久化数据
1.编辑redis.window.conf文件
appendonly no--> appendonly yes:开启持久化
appendsync always:每一次操作都进行持久化
appendsync everysec:没隔1秒进行持久化
appendsync no:不持久化
修改redis配置后重启服务器:redis-server.exe redis.windows.conf
5.Java客户端Jedis
Jedis:一款java操作数据库的工具
使用步骤:
1.下载jedis的jar包
2.使用
// 1.获取连接 空参构造就是"localhost", 6379
Jedis jedis = new Jedis("localhost", 6379);
// 2.操作
jedis.set("username", "jiba");
// 3.关闭连接
jedis.close();
Jedis操作各种redis的数据结构
1.字符串类型:string
2.哈希类型:hash
3.列表类型:list
4.集合类型:set
5.有序集合类型:sortedset
使用方式和命令行方式几乎一样
// 将指定键值对存入redis,并且在指定时间后自动删除键值对
jedis.setex(key, time, value)
6.jedis连接池:jedisPool
使用:
1.创建jedisPool连接池对象
2.调用方法getResource()方法获取jedis连接
// 创建配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); // 最大连接数
config.setMaxIdle(10); // 最大的空闲连接
// 1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
// 2.获取连接
Jedis jedis = jedisPool.getResource();
// 3.使用
jedis.set("hehe", "heihei");
// 4.关闭,归还到连接池中
jedis.close();