Redis
概念:是一款高性能NOSQL系列的非关系型数据库
关系型数据库:
1.数据间有关联关系
2.数据存储在硬盘的文件上
非关系型数据库:
存储key:value
1.数据之间没有关联关系
2.数据存储在内存中
下载安装
官网:https://redis.io
中文网:https://www.redis.net.cn 含有中文文档
下载解压即可使用
*redis.windows.conf:配置文件
*redis-cli.exe:redis的客户端 双击即可使用
*redis-server.exe:redis的服务器端 双击即可使用
命令操作
1.redis的数据结构
*redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
(1)字符串类型:string
(2)哈希类型:hash(map格式)
(3)列表类型:list
(4)集合类型:set
(5)有序集合类型:sortedset
2.操作
(1)字符串类型:string
1.存储 set key value
2.获取 get key
3.删除 del key
(2)哈希类型:hash(map格式)
1.存储 hset key field value
2.获取 hget key field 获取全部:hgetall key field
3.删除 hdel key field
(3)列表类型:list(可以选择从列表头添加元素或者列表尾添加元素)
1.添加
*lpush key value:将元素加入列表左边
*rpush key value:将元素加入列表右边
2.获取
*lrange key start end:范围获取 全拿赋值0 -1即可
3.删除
*lpop:从列表左边删除一个元素,并将元素返回
*rpop:从列表右边删除一个元素,并将元素返回
(4)集合类型:set 不允许重复元素
1.存储 sadd key field value
2.获取 smembers key:获取set集合中所有元素
3.删除 srem key field 删除集合中元素
(5)有序集合类型:sortedset 不允许元素重复,且元素有序。
1.存储 zadd key score value:存储数据和数据对应的分数,按照分数对数据进行排序
2.获取 zrange key start end:
3.删除 zrem key value
3.通用命令
1.keys * :查询所有的键
2.type key:获取key对应的类型
3.del key:删除指定的key value
持久化操作
1.redis是一个内存数据库,当redis服务器重启,数据则会丢失。我们可以将内存中的redis数据持久化到硬盘的文件,可以避免丢失。
2.redis持久化机制
(1)RDB:默认方式,不需要进行配置
*在一定的间隔事件中,检测key数量的变化情况,然后持久化数据
1.编辑配置文件redis.windows.conf文件
save 900 1 #900秒如果有一个Key被改变则持久化一次
save 300 10 #5分钟至少有10个key发生改变则持久化一次
save 60 10000 #1分钟至少有10000个key发生改变则持久化一次
2.重新启动redis服务器,并指定配置文件名称
*redis-server.exe redis.windows.conf
(2)AOF:日志记录的方式,记录每一条命令的操作。可以每一次命令操作后来持久化数据库。
1.编辑配置文件redis.windows.conf文件 将appendonly设置为yes
*appendfsync always :每一次操作都进行持久化
*appendfsync everysec:每隔一秒进行一次持久化
*appendfsync no:不开启AOF
使用Java客户端Jedis操作redis
Jedis:一款java操作redis数据库的工具
使用步骤:
1.下载相关Jar包
2.获取链接 Jedis jedis = new Jedis("主机名",“端口”); 空参构造时默认为Localhost 和6379端口
3.操作 例:jedis.set("username","zhangsan");
4.关闭连接 jedis.close();
Jedis操作各种数据结构
(1)字符串类型:string
set("key","value")
get("key")
setex("key",秒数,"value"); 将key:value键值对存入redis,并且在指定秒数后删除该键值对。
(2)哈希类型:hash(map格式)
hset("key","field","value1","value2"...)
hget("key","field")
hgetAll("key")
(3)列表类型:list
lpush/rpush("key","value")
lpop/rpop("key")
lrange("key",start,end):范围获取
(4)集合类型:set
sadd("key","value1","value2"....)
smember("key"):获取所有数据
(5)有序集合类型:sortedset
zadd("key",sorce,"value")
jedis连接池:JedisPool
使用:
1.创建JedisPool连接池对象
2.调用方法getResouce()方法获取Jedis连接,返回一个Jedis客户端对象,直接用该对象即可。