redis 基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[Redis基础知识问题]
1.redis是单线程还是多线程实现机制?这种机制的优缺点?
redis是单线程的实现机制。
优点:CPU单线程不会对服务器造成压力,对内存开销小!
缺点:当具有多个进程时,这时候不会分配资源给其他进程,处理时间会变长变慢,不能支持并发!
2.有几种持久化机制,分别是什么,及区别?
redis有RDP持久化、AOF持久化、无持久化、同时应用AOF和RDP持久化方式
RDP:该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘
RDP优点:适合用于进行备份和灾难恢复RDB,在恢复大数据集时的速度比AOF 的恢复速度要快。
RDP缺点:每次保存RDB 的时候,Redis都要fork()出一个子进程,并由子进程来进行实际的持久化工作比耗时
AOF:该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
AOF优点:AOF可以带来更高的数据安全性,AOF 文件有序地保存了对数据库执行的所有写入操作
AOF缺点:AOF文件的体积通常要大于RDB 文件的体积。根据所使用的fsync 策略,AOF 的速度可能会慢于RDB
无持久化:通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis 视为一个功能加强版的memcached了。
同时应用AOF和RDB:
3.如何设置、查看、取消key的过期时间?key过期策略?改变key 名字是否会改变过期时间?
设置过期时间:EXPIRE key seconds(s)/EXPIREAT key timestamp(timestamp)/PEXPIRE key milliseconds(ms)PEXPIREAT key milliseconds-timestamp(ms)
查看过期时间:PTTL key/TTL key
取消过期时间:PERSIST key
redis key过期策略(三种):
被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key
当前已用内存超过maxmemory限定时,触发主动清理策略
当改变key名字是不会改变key的过期时间
4.常见的数据结构及各结构至少5个常见命令?
String:
SET key value
GET key
SETEX key seconds value
MSETNX key value [key value ...]
SETNX key value
MSET key value [key value ...]
MGET key [key ...]
APPEND key value
INCR key
DECR key
List:
LPUSH key value [value ...]
RPUSH key value [value ...]
LLEN key
LRANGE key start stop
LPOP key
RPOP key
LLEN key
LINDEX key index
Hash:
HSET key field value
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HSETNX key field value
HDEL key field [field ...]
HGETALL key
HINCRBY key field increment
Set:
SADD key member [member ...]
SCARD key
SINTER key [key ...]
SISMEMBER key member
SMEMBERS key
SDIFF key [key ...]
SINTER key [key ...]
SUNION key [key ...]
SortedSet:
ZADD key score member [[score member] [score member] ...]
ZINCRBY key increment member
ZCARD key
ZRANK key member
ZSCORE key member
ZREM key member [member ...]
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]。
ZCOUNT key min max 。
key的操作:
DEL key [key ...]
EXISTS key
KEYS pattern
EXPIRE key seconds
TTL key
SORT key
5.如何发布信息?如何订阅一个频道和多个频道?订阅foo和f*会收到几条信息?
发布消息:PUBLISH channel message
订阅消息:PSUBSCRIBE pattern [pattern ...]
那么当有信息发送到频道foo 时,客户端将收到两条信息:
1、一条来自频道foo ,信息类型为message ;
2、另一条来自模式f* ,信息类型为pmessage ;
6.事务如何实现及使用?是否支持回滚?【非必须】
开启事物:MULTI
取消事物:DISCARD
且事务成功执行:WATCH lock lock_times