【Redis】浅谈Redis的命令操作和持久化

概述

▶ 什么是NOSQL?

NOSQL(NOSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型数据库

▶ NOSQL和关系型数据库的比较?

  1. 关系数据库存储在硬盘中,NOSQL存储在内存中,因此NOSQL查询速度更快
  2. NOSQL是基于键值对的,因此拓展性更强,效率更高
  3. NOSQL不支持事务,因此安全性不及关系型数据库

▶ NOSQL和关系型数据库的关系?

互补而非对立——一般会将数据存储在关系型数据库中,在nosql数据库中备份数据(NOSQL作为关系型SQL的缓存)

▶ 什么是Redis?

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库;全称Remote Dictionary Server ,即远程字典服务

 

 

命令操作

Redis存储的是key-value格式的数据。其中key都是字符串value有5种不同的数据结构

字符串类型string
哈希类型hash
列表类型list
集合类型set
有序集合类型sortedset(zset)

string

  1. set key value 存储。可覆盖。
  2. get key 获取。
  3. incr key 递增一。如果key不存在,默认生成一个,初始值为0。incr后显然为1
    decr key 递减一。如果key不存在,默认生成一个,初始值为0。decr后显然为-1
  4. incrby key n 递增n。key不存在同样自动生成
    decrby key n 递减n。key不存在同样自动生成
  5. append key value 如果key不存在,则新建;如果key已存在,则追加(“2"append"3"后为"23”)
  6. :无论怎样的操作,value的本质还是string。在递增递减时,字符串必须是可以转化为整形进行计算的,否则报错。

hash

  1. hset key field value 设置一个键值对(field-value),可覆盖原先field-value
    hmset key field1 value1 field2 value2… 设置多个键值对(field-value),可覆盖原先field-value
  2. hget key field 获取
    hmget key field1 field2 field3… 获取多个
  3. hkeys key 获取所有的field
    hvals key 获取所有的value
    hgetall key 获取所有的field-value
  4. hexists key field 是否含有field键(返回1/0)
  5. hlen key hash表的长度
  6. hincrby key field n 值增加n。注意没有"减少"对应的命令,通过设置为负数实现。
  7. :一整条数据本身就是一个键值对,它的值又是键值对(hash表)。为了区分,作为值(value)的键值对用field-value表示——表示法有可能引起误会,特此说明

list

  1. lpush key value(s) 左侧(头部)push一个或多个value
    rpush key value(s) 右侧(尾部)push一个或多个value
  2. lrange key start end 获取链表从star到end的值(包括);支持负数索引;获取所有:lrange mylist 0 -1
  3. lpop 左侧pop
    rpop 右侧pop
  4. llen 获取链表长度
  5. lset key index value 设置某个下标的值(不能越界)

set

  1. sadd key values 添加一个或多个value成员
  2. smembers key 获取集合所有成员(无顺序)
  3. srem key values 删除成员
  4. sismember key value 判断某个成员是否存在于集合中,返回1/0(效率极高)
  5. scard key 获取集合的成员数量
  6. sdiff key1 key2… 差集
    sinter key1 key2… 交集
    sunion key1 key2… 并集

zset

  1. zadd key score1 value1 score2 value2… 添加一个或多个score-value成员
  2. zrange key start end (withscores) 获取范围内的值(加上withscores可同时获取对应分数score)
  3. zscore key value 获取指定成员的分数
  4. zcard key 获取成员的个数
  5. srem key values 删除一个或多个指定成员
    sremrangebyrank key start end 根据排名范围删除成员
    sremrangebyscore key min max 根据 分数范围删除成员
  6. zrank key value 获取成员排名(从小到大)
    zrevrank key value 获取成员排名(从大到小)

key的通用操作

  1. keys * 查询所有的键(*为正则)
  2. exists key key键是否存在(1/0)
  3. del key 删除键值对
  4. type key 获取key对应value的类型

 
 
 

持久化

Redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
 
Redis有两种持久化机制:RDB 和 AOF

 
RDB如果一定的时间间隔内key的操作数达到了某个值,则持久化数据(默认方式)

配置文件为redis.windows.conf,里面默认的三条数据为:save 900 1,save 300 10,save 60 10000

意义为:如果在60秒(1min)时间间隔内key被操作了10000次,则持久化数据(其他同理)
 
AOF可以每一个操作命令或每一秒后持久化数据

配置文件还是redis.windows.conf,把appendonly开关设置一下(yes/no)

appendfsync always : 每一个操作命令就持久化
appendfsync everysec : 每隔一秒就持久化
appendfsync no : 不持久化
 

注意:打开Redis服务器端时是默认指定了配置文件的。如果没有,则以命令行形式打开服务器端:路径>redis-server.exe redis.windows.conf

比较:RDB机制会丢数据(如果你的操作不是那么频繁,便触发不了持久化);AOF机制对性能影响过大(毕竟每个操作或每一秒就持久化一次)——— 两种机制都不完美,这也正是NOSQL要与关系型SQL配合使用的原因
 

 

 

 

 

 

 
 

 
 

 
 

 

End ♬

by a Lolicon ✪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值