redis的初识

1.数据库的分类

①关系型数据库(以关系来建模的数据库):mysql,oracle,sqlservice
②非关系型数据库:redis,mongoDB,hadoop,Memcached

2.redis的认识

Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。
Redis 是以key-value形式存储的Nosql,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合

3.redis的特点

1.支持的数据结构有:数组,set,list,map,hash等
2.数据存储在内容,并不定期持久化到磁盘
3.由于存储在内存中器读写效率很高
4.支持集群(主从同步)
5.提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
6.一般使用来做缓存的

4.Memcached和redis的区别

相同点:都是key-value类型的非关系数据库,读写效率高,都支持储存过期
不同点:
redis支持数据持久化,安全性更高
redis支持的value更多

5.redis操作数据类型的常用命令

5.1 对String类型数据的操作
set key value 将字符串value关联到key
get key 获取到key的value
mset key1 value1 key2 value2 同时设置多个key
mget key 1 key2 同时获取多个key
incr key 将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
decr key 将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)
incrBy key num 自增多少
decrBy key num 自减多少

5.2 对key的常用操作
keys * 获取所有的key
del key 删除对应的key
expire key 时间 设置某个key的过期时间
ttl key 查看key的过期时间
flushall 清空整个redis服务器数据,所有的数据库全部清空
flushdb 清除当前库,redis中默认有16个数据库,名称分别为0,1,2,…,15

5.3 redis对list集合的操作
lpush key value 将一个或多个值 value 插入到列表 key 的表头(最左边放起)
rpush key value 将一个或多个值 value 插入到列表 key 的表尾(最右边放起)
lrange key 0 -1 展示对应的key
lpop key 移除一个key的value(移除最上方的)
rpop key 移除最下方的key的value
lindex key index 返回列表 key 中,下标为 index 的元素

5.4 对set数据的操作
sadd key member 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
srem key member 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
smembers key 返回集合 key 中的所有成员。

5.5 对hash类型的操作
hset key name value 添加一个name=>value键值对到key这个hash类型
hget key name 获取hash类型的name键对应的值
hmset key name1 key1 name2 key2 批量添加name=>value键值对到key这个hash
hmget key name1 name2 批量获取hash类型的键对应的值

5.6 redis的事物(弱事物一般没用)
multi 标记一个事务块的开始。
exec 执行所有事务块内的命令。

5.7 密码的设置
5.7.1动态设置密码
CONFIG SET requirepass 123456 将密码设置为123456
CONFIG SET requirepass “” 清除密码
AUTH 123456 在client.exe中输入密码进行认证

5.7.2 redis.conf进行设置
requirepass 密码 在redis.conf中添加即可
AUTH 123456 在client.exe中输入密码进行认证

6.java简单操作redis6.1使用jedis

6.1 一般我们使用jedis这个java客户端操作redis数据库
那么jedis就是客户端,而redis就是服务端

6.2 在idea中简单测试看看数据能否操作
首先创建一个普通项目
导入jedis的相关包一个jedis的包一个连接池的包
然后我自己创建一个jedis的工具类jedisUtil用来获取jedis对象和关闭jedis
如下:redis的初识_第1张图片然后测试一波能否存list数据如下:
redis的初识_第2张图片
7.redis持久化的认识
redis首先他数据会保存到内存中,提高访问的速度。但是断电以后,就会丢失数据。
所以还支持持久化,如果满足持久化策略,就会把内存的数据保存到rdb数据文件,
还来不及保存那部分数据存放到aof更新日志中。

rdb:
我们如何配置rdb文件呢,在redis.conf中修改即可:
redis的初识_第3张图片为了数据的安全我设置每一秒改变同步数据一次

aof:
对于aof
aof 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。
我们不需要更改,默认此处appendonly 后面为yes即可,如果为no就是关闭状态
redis的初识_第4张图片
8.淘汰策略

8.1 volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

8.2 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

8.3 volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

当redis存放的数据到达配置的最大内容后,会按照配置淘汰策略进行淘汰,我们选择lru更加合理。

你可能感兴趣的:(java学习之旅)