redis学习总结

1、redis属于非关系型数据库,而我们经常用的mysql oracle数据库都是属于关系型数据库,它们本质上的区别是:mysql oracle数据库对于数据规范要求严格,还有对事务的支持;而redis则没有明确的数据规范要求,redis在操作事务是单线程的,不会出现线程安全性问题,例(incr  生成一个id)

2、Redis默认支持16个数据库,对外都是以一个从0开始的递增数字命名,可以通过参数databases来修改默认数据库个数

客户端连接Redis服务后会自动选择0号数据库,可以通过SELECT命令更换数据库,例如选择1号数据库: Redis> SELECT 1 OK Redis [1]> GET test (nil) 说明: Redis不支持自定义数据库名称。

Redis不支持为每个数据库设置访问密码 Redis的多个数据库之间不是完全隔离的,FLUSHALL命令会清空所有数据库的数据。 多数据库不适用存储不同应用的数据。

3、关闭redis服务的命令:shutdown,进入redis服务的命令:exit,redis学习总结_第1张图片

Redis数据类型之散列类型(hash):

redis学习总结_第2张图片

redis学习总结_第3张图片

Redis的持久化:

Redis的强大功能很大程度上是由于其将所有数据都存储在内存中,为了使Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式持久化到硬盘中。 Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将两种结合使用。 RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被更改的键的个数大于指定数值时就会进行快照。 RDB是Redis的默认持久化方式。

Redis的持久化之RDB:

RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被更改的键的个数大于指定数值时就会进行快照。 RDB是Redis的默认持久化方式,保存的是数据的结果,适合大数据量时的快照。

Redis的持久化之AOF:

Redis的AOF持久化策略是将发送到Redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件,AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名是appendonly.aof,可以通过appendfilename参数修改。 127.0.0.1:6379> set test 123 OK 127.0.0.1:6379> set test2 234 OK 执行以上命令,可以看到appendonly.aof文件中保存了操作命令  :*2 $6 SELECT $1 0 *3 $3 set $4 test $3 123 *3 $3 set $5 test2 $3 234,保存的是数据的执行过程。

Redis之生存时间:

Redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。 EXPIRE key seconds;清除生存时间 PERSIST key;TTL 命令以秒为单位返回 key 的剩余过期时间。

五种类型:string hash list set sortedset

redis应用场景:
    在我们的系统中,当做缓存来使用
    string,hash ,expire
ttl  分布式的sessionlist:模拟队列set:去重sortedset: topN
发布订阅:
    subscribe publish
模拟消息队列的功能
redis 单线程  不会出现线程安全问题 
incr  生成一个id

你可能感兴趣的:(redis,nosql)