一、redis系列之基础知识与centos下环境搭建
1. Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
- Redis 支持数据的备份,即 master-slave 模式的数据备份。
2. Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。
3.Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(sorted set:有序集合)
4. CAP 理论就是说在分布式存储系统中,最多只能实现上面的亮点,而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的。
C:强一致性:在分布式系统中的所有数据备份,在同一时刻是否同样的值。
A:高可用性:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
P:分布式容忍性:以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。
分布式架构的时候必须做出取舍,以上三者只能同时实现两者。
CA:传统 Oracle 数据库
AP:大多数网站架构的选择
CP:redis、Mongdb
5. BASE 就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE 其实就是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft stable)
最终一致(Eventually consistent)
BASE 的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。为什么这么说呢,原因就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须用另外一种,这里的 BASE 就是解决这个问题的办法。
6. reids:REmote DIctionary Server(远程字典服务器)
7. centos 下安装 reids:
- 下载:wget wget http://download.redis.io/releases/redis-5.0.0.tar.gz
- 解压
- 然后复制到到 /opt 目录下
- 进入 /opt/redis-5.0.0
- 运行:make
若是出现以下错误,则则说明未安装 gcc,使用命令安装 gcc:yum install gcc
安装好后继续执行 make,若出现如下提示,则将 make 改为 make MALLOC=libc,推测是因为编译库的问题。
- 安装编译后的文件:make install,redis 可执行文件将被复制到 /usr/local/bin/,但没有配置,手动复制配置:cp redis.conf /myredis 目录中(需要先新建 myredis 目录)
- 更改 redis.conf 文件中 daemonize 为 yes 后台启动
9. 启动 redis:
redis-server /myredis/redis.conf
redis-cli -p -6379
10. 在 centos 中查看 redis 有没有在后台运行:ps -ef|grep redis
11. 关闭 redis 服务:
SHUTDOWN
然后 exit 返回 linux 命令行
12. redis 系统自带 16 个数据库,切换数据库用角标:0-15
13. 切换数据库:select + 角标
例:切换到 7 号数据库:select 6
14. 查看当前数据库所有数据:keys *。相当于关系型数据库的 select * 。
15. 查看当前数据库数据量:DBSIZE
16. 清空当前数据库:FLUSHDB
清空所有数据库:FLUSHALL
17.redis 的五大数据类型:
- String(字符串)
- Hash(哈希,类似于 Java 中的 Map)
- List(列表)
- Set(集合)
- Zset(sorted set:有序集合)
18. string 是最基本的类型,可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是一个二进制安全类型,意思是 redis 的 string 可以包含任何数据,比如 jpg 图片或者序列话的对象
string 类型是 redis 最基本的数据类型,一个 redis 中字符串 value 最多可以是 512M。
19. redis 中 Hash(哈希)是一个键值对集合。
redis 中 hash 是 string 类型的 field 和 value 的映射表,hash 特别适合与存储对象。
20. list(列表):redis 列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素在列表的头部(左边)或者尾部(右边)。它的底层实际是一个链表。
21. set(集合):string 类型的无序集合不允许元素重复,,通过 hashTable 实现的。
22. zset(有序集合):zset 和 set 一样也是 string 类型元素集合,都不允许元素重复,不懂的是 zset 每个元素都会关联一个都变了类型的分数,扔地上真是通过分数来为集合中的每个成员进行从小到大的排序,zset 成员中每一个元素都是唯一的,但是分数(score)是可重复的。