Redis相关概念

在学习Redis之前,我们应该带着几个问题来学习:

1、 Redis的特殊之处在哪里?

2、 Redis解决什么问题?

3、 使用Redis的时候,应该注意点什么?

普遍认为Redis是一个可持久化的key-value内存数据库。但也有人认为这样定义Redis有点不太准确。Redis有5种数据类型,只有其中一种是典型的key-value结构。理解这五种数据类型,了解他们是怎么实现的,知道他们能提供的方法,以及想想怎么用他们来重塑一些业务,才是学习Redis的关键所在。

其实关系型数据库,也是一种数据结构---表。表既是复杂的,又是稳定的。我们可以用表构建很多很多的业务模型,但是表也有缺点。表在某种情况会丢失简单和快。如果数据本身就是scalars,lists,hashes,or sets为什么不直接存储城scalars,lists,hashes,orset?为什么查找一个数据的使用比exsits(key) 或慢于O(1)的方法?

一、Databases(数据库)

Redis 同样也有数据库概念。在Redis中对数据库的命名是用数字,从零开始。

数据库的数量也是在redis.conf中配置:

EXPIRE key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 16
二、Commands,Keys and Values(命令、键值)

Key是String类型,Value可以有不同的类型。不管Value的类型是什么,
Redis都是把它作为字节数组处理。Value的类型,是依赖于不同的类型驱动来解析的。不同类型经常使用的命令如下:

Keys(键):

KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo
DEL key [key ...]
删除给定的一个或多个 key 。
不存在的 key 会被忽略。
EXISTS key
检查给定 key 是否存在。

String(字符串):

APPEND key value
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
DECR 和 INCR(针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 或DECR操作。)
DECR key
将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
INCR key
将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。

Hash(哈希表):

hset users:test name Tom
hget users:test name

hmset users:hello name hello password 123abc
hmget users:hello name password
hgetall users:hello
hkeys users:hello
hdel users:hello password

List(列表):

lpush sys.user zhangsan  lisi wangwu
lindex 0  ##返回wangwu

Set(集合):

SortedSet(有序集合):

三、Memory andPersistence(内存存储和持久化)

Redis 本身支持持久化,通过在一定时间间隔或触发操作,将内存中的数据同步到磁盘来保证持久化。Redis 支持两种持久化方式,一种是  Snapshotting(快照),保存为dump.rdb文件,也是默认方式,另一种是 Append-only file(缩写aof)的方式,保存为 .aof 文件。

Snapshotting配置:

save 900 1 #900秒内如果超过1个key被修改,则发起快照保存  
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存  
save 60 10000 #60秒内容如超过10000个key被修改,则发起快照保存 

如果我们需要关闭快照,只需要将这几行注释了,然后重启 redis 即可。

如果是正在运行的实例,可以使用 redis-cli的命令

# 查看当前配置
config get save
# 关闭快照
config set save ""
来在线更新配置,输出OK表示设置成功

Aof配置:

appendonly yes //启用aof持久化方式  

# appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用  
appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐  
# appendfsync no //完全依赖os,性能最好,持久化没保证  
在线更新配置使用
# 查看当前配置
config get appendfsync
# 关闭快照
config set appendfsync no
通过这两个配置,redis就可以完全在内存运行。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值