介绍
- redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
- redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
- Redis 是一个高性能的key-value数据库
- Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
- Redis中命令不区分大小写
多数据库
- Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库。
- 每个数据库对外都是一个从0开始的递增数字命名
- 默认为16个字典,不支持自定义名字,可以通过配置databases属性来改变字典的数量(仅指一个实例中)
- 客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,如select 1
- Redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部数据库,要么连一个数据库也没有权限访问
- FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据,flushdb可以单独指定其中的某个数据库
- 每个数据库都有属于自己的空间,不必担心之间的key冲突。
- 由于Redis非常轻量级,一个空Redis实例占用的内在只有1M左右,所以不用担心多个Redis实例会额外占用很多内存。
- 可以通过多个实例的方式来达到多数据库的目的
序列化相关
- 使用客户端向redis存值时,一般会将值转换为string,然后存储到redis中
- 当存储的值非原始stirng 字节时,redis部分操作会出错
- redis 可以处理数字 和stirng类型的数字,进行自增 加减操作
- 常用序列化类
- GenericJackson2JsonRedisSerializer
- JdkSerializationRedisSerializer
- 其序列化后的值会有相关的类信息,不是单纯的值字节数组,不可以进行数字相关操作
- GenericToStringSerializer
- StringRedisSerializer