1.Redis的数据类型?
Redis支持五种数据类型:
string(字符串),最基本的数据类型,一个key对应一个value
hash(哈希),是一个键值对集合,特别适合存储对象
list(列表),简单的字符串列表
set(无序集合),是通过哈希表实现的
sorted set(有序集合)
2.Redis的持久化机制是什么?
Redis提供了两种持久化机制RDB(RDBRedis DataBase)和AOF机制
1.RDB(RDBRedis DataBase持久化方式):是指用数据集快照的方式半持久化模式,记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。
优点:
1、只有一个文件dump.rdb方便持久化
2、容灾性好,一个文件可以保存到安全的磁盘
3、性能最大化
缺点:
1、数据安全性低。RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候。
2.AOF(Append_only file)持久化方式:是指所有的命令行记录以redis命令请求协议的格式完全持久化存储,保存为aof文件
优点:
1.数据安全,aof持久化可以配置append属性,每惊醒一次命令操作就记录到aof文件中一次。
2.通过append模式写文件,及时中途服务器宕机,可以通过redis_check_aof工具解决数据一致性问题
3.AOF机制的rewrite模式。AOF文件没被rewrite之前
缺点:
1.AOF文件比RDB文件大,且恢复速度慢
2.数据集大的时候,比rdb启动效率低
3.java中++操作符是线程安全的吗?
不是线程安全的操作,它涉及到多个指令,如读取变量值,增加,然后存储会内存,这个过程可能会出现多个线程交差。
java中++操作符分为三个阶段:
1.把变量读取到内存,2.变量增加,3.变量存储回内存
4.hashtable和hashmap的区别和联系?
1.hashtable是线程安全的,同样效率比较低,然而hashmap不是线程安全的,效率也比较高
2.hashtable是跟jdk一块出来,而hashmap是在jdk1.2进行的版本迭代
3.hashtable既不支持Null key也不支持Null value,HashMap支持Null key,也支持Null value。
4.初始容量大小和每次扩充容量大小的不同,Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1.hashmap的初始化大小为16,之后每次扩充,容量变为原来的2倍。创建时,如果给定了容量初始值,那么hashtable会直接使用你给定的大小,而会将其扩充为2的幂次方大小。也就是说hashtable会尽量使用素数,奇数。而则总是使用2的幂作为哈希表的大小