简答介绍Redis的基本使用

Redis是一款高性能的key-value数据库,Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份,并且Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
Redis的操作相当简单,我们可以使用redis-cli工具在命令行连接redis,对于redis的命令相当简单,详看下面的介绍

基本数据类型

  • String
    string是redis最基本的类型,该类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 ,string类型是Redis最基本的数据类型,一个键最大能存储512MB。
127.0.0.1:6379> SET name "redis.net.cn"
OK
127.0.0.1:6379> GET name
"redis.net.cn"
127.0.0.1:6379> DEL name
(integer) 1

在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为redis.net.cn。我们使用DEL删除键值对,如果成功返回(integer) 1否则返回(integer) 0

  • Hash
    hash 是一个键值对集合,hash是一个string类型的field(字段)和value(值)的映射表,hash特别适合用于存储对象。
127.0.0.1:6379> HMSET user username redis.net.cn password redis.net.cn points 200
OK
127.0.0.1:6379> HGETALL user
1) "username"
2) "redis.net.cn"
3) "password"
4) "redis.net.cn"
5) "points"
6) "200"
127.0.0.1:6379> HGET user username
"redis.net.cn"

user为键后面跟着的是field(字段)和value(值)的映射表,我们可以使用HGETALL获得所有字段和值,使用HGET可以获得指定的字段所代表的值

  • List
    列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
127.0.0.1:6379> lpush rr redis dd
(integer) 2
127.0.0.1:6379> rpush rr aa bb
(integer) 4
127.0.0.1:6379> lrange rr 0 10
1) "dd"
2) "redis"
3) "aa"
4) "bb"

lrange可以指定查看从从第几个到第几个的内容,我们可以使用rpop或lpop来输出列表内的元素

  • Set
    Set是string类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
127.0.0.1:6379> sadd key member
(integer) 1
127.0.0.1:6379> sadd key m
(integer) 1
127.0.0.1:6379> sadd key member
(integer) 0
127.0.0.1:6379> smembers key
1) "member"
2) "m"

添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。以上实例中 member 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

  • zset
    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
127.0.0.1:6379> zadd kk 12 mmm
(integer) 1
127.0.0.1:6379> zadd kk 1 ddd
(integer) 1
127.0.0.1:6379> zadd kk 5 llll
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE kk 0 1000
1) "ddd"
2) "llll"
3) "mmm"

事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  • 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
    一个事务从开始到执行会经历以下三个阶段:
  • 开始事务。
  • 命令入队。
  • 执行事务。
    以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
127.0.0.1:6379> GET book-name
QUEUED
127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
127.0.0.1:6379> SMEMBERS tag
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Programming"
   5) "Mastering Series"
   6) "C++"

持久化

Redis是内存数据库,宕机后数据会消失,Redis重启后快速恢复数据,要提供持久化机制。redis提供了两种持久化方式RDB和AOF

RDB

RDB(Redis DataBase),是redis默认的存储方式,RDB方式是通过快照完成的。它保存的是某一时刻的数据并不关注过程。RDB保存redis某一时刻的数据的快照
触发快照的方式

  1. 符合自定义配置的快照规则;
  2. 执行save或者bgsave命令;
  3. 执行flushall命令;
  4. 执行主从复制操作 (第一次)。
    优点
    1.RDB是二进制压缩文件,占用空间小,便于传输(传给slaver);
    2.主进程fork子进程,可以最大化Redis性能;
    3.使用RDB文件来恢复数据较快。
    缺点
    1、不保证数据完整性,会丢失最后一次快照以后更改的所有数据;
    2、父进程在fork子进程的时候如果主进程比较大会阻塞;

AOF

AOF(append only file)是Redis的另一种持久化方式。Redis默认情况下是不开启的。开启AOF持久化后Redis 将所有对数据库进行过写入的命令(及其参数)(RESP)记录到 AOF 文件, 以此达到记录数据库状态的目的,这样当Redis重启后只要按顺序回放这些命令就会恢复到原始状态了。AOF会记录过程,RDB只管结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值