Redis基础-概念、下载安装、使用、命令、持久化

Redis

  • 教程:https://www.runoob.com/redis/redis-tutorial.html

1.概念:

非关系型数据库(NOSQL),有Redis/hbase…;而关系型数据库(mysql/oracle…)。关系型数据库的数据之间有关系,数据存储在硬盘文件上。而非关系型数据库的数据之间没哟关联关系,数据是存储在内存之中的。在查询一些不常发生变化的数据时,关系型数据的耗时性需要考虑,所以缓存的思想可以很好的解决这个问题。用Redis来做缓存。

1.1什么是NOSQL?

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

1.1.1NOSQL和关系型数据库比较

优点:
    1)成本:nosql数据库简单易部署,基本是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
    3)存储数据的格式:nosql的存储格式是key、value形式,文档形式,图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而sql数据库则只支持基础类型。
    4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
缺点:
    1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库的10几年的技术同日而语。
    2)不能提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
    3)不提供关系型数据库对事务的处理。

1.1.2非关系型数据库的优势:

1)性能NOSQL是基于键值对的,是一对的。可以看成表中主键和值的对应关系,而且不需要经过sql层的解析,所以性能非常高。
2)可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以扩展性高。水平扩展。

1.1.3关系型数据库的优势:

1)复杂查询可以用sql语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2)事务支持使得对于安全性能很高的数据访问要求得以实现。

1.1.4总结

  • 关系型数据库与nosql数据库并非对立关系而是互补关系。注意!!!

1.2 主流的nosql产品

  1. 键值(Key-Value)存储数据库:
    • 键值对NoSQL是比较流行的一种NoSQL的解决方案,特点就是采用键值对来存储数据,它的优势在于容易部署和简单性,但是如果查询的部分只是整个数据库的小部分,那性能并不是特别突出。产品:Redis/Berkeley DB…
  2. 列存储数据库
    • 列存储NoSQL比较适合的场景是处理海量的分布式存储的数据,它的主键可能是指向多个列的,数据量增加的时候几乎不影响性能。产品:Cassamdra/HBase/Riak…
  3. 文档型数据库
    • 文档数据库是采用类似键值对的方式进行存储,更准确的说是采用的JSON的格式进行存储,可以嵌套键值对,文档数据库比键值对数据库的效率更高,主流的文档型NoSQL为MongoDB、CouchDB等等。产品:MongDB…
  4. 图形(Graph)数据库
    • 图形数据库是以灵活的图形结构去存储数据,这样极大的避免了传统的SQL数据库需要首先定义模式才能存储数据的局限性。Neo4J/InfoGrid/Infinite Graph…

1.3什么是Redis?

1.3.1 redis的应用场景有哪些?

  1. 会话缓存(最常用)
  2. 消息队列,比如支付
  3. 活动排行榜或计数
  4. 发布,订阅消息(消息通知)
  5. 商品列表,评论列表等
  6. 分布式集群中的session分离
  7. 数据过期处理(可以精确到毫秒)

1.3.2 redis数据类型

Redis一共支持五种数据类:string(字符串),hash(哈希),list(列表),set(集合)和zset(sorted set有序集合)。

2.下载安装:

  • 见博客:https://blog.csdn.net/Shen_R/article/details/104762247
  • 安装好之后的几个文件解释:
    • redis.windows.conf:配置文件
    • redis-cli.exe:redis的客户端
    • redis-server.exe:redis服务器端

3.命令操作:

  • 更多命令见redis中文网,有命令大全

3.1 redis的数据结构:

  • redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
    1. string(字符串)
    2. hash(哈希)
    3. list(列表)
    4. set(集合)
    5. zset(sorted set有序集合)

3.2 字符串类型 string

  1. 存储:set key value
  2. 获取:get key
  3. 删除:del key

3.3 哈希类型 hash

  1. 存储:hset key field value
  2. 获取:
    • hget key field:获取指定的field对应的值
    • hgetall key:获取所有的field和value
  3. 删除:hdel key field

3.4 列表类型 list(允许重复元素)

可以添加一个元素到列表的头部(左边)或者尾部(右边),它的数据结构很像一个队列

  1. 添加:
    • lpush key value:将元素加入到列表的左边
    • rpush key value:将元素加入到列表的右边
  2. 获取:
    • lrange key start end:范围获取。
      • lrange mylist 0 -1;获取所有的值
  3. 删除:
    • lpop key:删除列表最左边的元素,并将元素返回
    • rpop key:删除列表最右边的元素,并将元素返回

3.5 集合类型 set(不允许重复元素)

  1. 存储:sadd key value
  2. 获取:smembers key:获取set集合中所有元素
  3. 删除:srem key value:删除set集合中的某个元素

3.6 有序集合类型 zset(不允许重复元素,且自动排序)

  1. 存储:zadd key score value
  2. 获取:zrange key start end (withscores)
  3. 删除:zrem key value

3.7 通用命令

  • kyes *:查询所有的键
  • type key:获取键对应的value的类型
  • del key:删除指定的key和value

4.持久化

  1. Redis是一个内存数据库,当redis服务器重启时,数据会丢失,我们可以将Redis内存中的数据持久化保存到硬盘的文件中。
  2. Redis持久化机制:
    1. RDB:默认方式,不需要进行配置,默认就是用这种机制
      • 在一定的间隔时间中,检测key的变化情况,然后持久化数据
      1. 编辑redis.windows.conf文件
        • # after 900 sec (15 min) if at least 1 key changed
          save 900 1
        • # after 300 sec (5 min) if at least 10 keys changed
          save 300 10
        • # after 60 sec if at least 10000 keys changed
          save 60 10000
      2. 重新启动redis服务,并指定配置文件名称
        • 在安装包内,CMD命令行执行命令redis-server.exe redis.windows.conf
      3. 之后再打开reids-cli客户端,就可以查询之前数据了。
      4. 数据存储的是dump.RDB文件
    2. AOF:日志记录方式,可以记录每一条命令的操作。可以每一次命令操作后,就持久化一次数据。
      • appendonly no(关闭AOF)–> appendonly yes(开启AOF)
      • # appendfsync always:每一次操作都进行持久化
      • appendfsync everysec:每隔一秒进行一次持久化
      • # appendfsync no:不进行持久化
发布了52 篇原创文章 · 获赞 1 · 访问量 2271

猜你喜欢

转载自blog.csdn.net/Shen_R/article/details/104782604