Redis知识梳理

Redis是速度非常快的非关系型内存键值数据库,可以存储键和五种不同类型的值之间的映射。
键的类型只能为字符串,值支持五种数据类型为:字符串、列表、集合、有序集合、散列表。

  • STRING
    这里写图片描述

set hello world
OK

get hello
“world”

del hello
(integer) 1

get hello
(nil)

  • LIST

rpush list-key item
(integer) 1
rpush list-key item2
(integer) 2
rpush list-key item
(integer) 3

lrange list-key 0 -1
1) “item”
2) “item2”
3) “item”

lindex list-key 1
“item2”

lpop list-key
“item”

lrange list-key 0 -1
1) “item2”
2) “item”

  • SET

sadd set-key item
(integer) 1
sadd set-key item2
(integer) 1
sadd set-key item3
(integer) 1
sadd set-key item
(integer) 0

smembers set-key
1) “item”
2) “item2”
3) “item3”

sismember set-key item4
(integer) 0
sismember set-key item
(integer) 1

srem set-key item2
(integer) 1
srem set-key item2
(integer) 0

smembers set-key
1) “item”
2) “item3”

  • HASH

hset hash-key sub-key1 value1
(integer) 1
hset hash-key sub-key2 value2
(integer) 1
hset hash-key sub-key1 value1
(integer) 0

hgetall hash-key
1) “sub-key1”
2) “value1”
3) “sub-key2”
4) “value2”

hdel hash-key sub-key2
(integer) 1
hdel hash-key sub-key2
(integer) 0

hget hash-key sub-key1
“value1”

hgetall hash-key
1) “sub-key1”
2) “value1”

  • ZSET

zadd zset-key 728 member1
(integer) 1
zadd zset-key 982 member0
(integer) 1
zadd zset-key 982 member0
(integer) 0

zrange zset-key 0 -1 withscores
1) “member1”
2) “728”
3) “member0”
4) “982”

zrangebyscore zset-key 0 800 withscores
1) “member1”
2) “728”

zrem zset-key member1
(integer) 1
zrem zset-key member1
(integer) 0

zrange zset-key 0 -1 withscores
1) “member0”
2) “982”

Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。
对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。

可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。

作为内存数据库,出于对性能和内存消耗的考虑,Redis 的淘汰算法实际实现上并非针对所有 key,而是抽样一小部分 key 从中选出被淘汰key。
使用 Redis 缓存数据时,为了提高缓存命中率,需要保证缓存数据都是热点数据。可以将内存最大使用量设置为热点数据占用的内存量,然后启用allkeys-lru淘汰策略,将最近最少使用的数据淘汰。

Redis是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。

通过使用 slaveof host port 命令来让一个服务器成为另一个服务器的从服务器。一个从服务器只能有一个主服务器,并且不支持主主复制。

分片可以将数据划分为多个部分,可以将数据存储到多台机器里面,也可以从多台机器里面获取数据,这种方法在解决某些问题时可以获得线性级别的性能提升。

Redis 服务器是一个事件驱动程序。

一个事务包含了多个命令,服务器在执行事务期间,不会改去执行其它客户端的命令请求。
事务中的多个命令被一次性发送给服务器,而不是一条一条发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。Redis最简单的事务实现方式是使用 MULTI和EXEC命令将事务操作包围起来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值