文章目录

  • 一、存储数据类型分类
  • 二、关系数据库与非关系型数据库
  • 三、非关系型数据库产生背景
  • 四、Redis简介
  • 五、Redis的数据类型
  • 5.1 String(字符串)
  • 5.2 Hash(哈希)
  • 5.3 list(列表)
  • 5.4 set(集合)
  • 5.5 zset(sorted set:有序集合)
  • 5.6 各个数据类型应用场景
  • 六、Redis部署


一、存储数据类型分类

  • 结构化数据:可以通过二维表格形式表述这个数据。
  • 非结构化数据:不方便以二维表格的形式表述的这种类型的数据
  • 根据不同种存储数据类型分类分成两种不同类型的数据库:
  • sql结构化数据库:里面存储的数据类型是结构化数据。别称:关系型数据库
  • nosql非结构化数据库:里面存储的数据类型是非结构化数据。别称:非关系型数据库

二、关系数据库与非关系型数据库

  • 关系数据库
  • 一个结构化的数据库,创建在关系模型基础之上
  • 一般面向于记录
  • 包括:Oracle、MySQL、SQL Server、Microsoft Access、DB2等
  • 非关系型数据库
  • 除了主流的关系型数据库外的数据库,都认为是非关系型
  • 包括:Redis、MongoDB、HBASE、CouhDB等

三、非关系型数据库产生背景

  • High performance——对数据库高并发读写需求
  • Huge Storage——对海量数据高效存储于访问需求
  • High Scalability && High Availability——对数据库高可扩展性与高可用性需求

四、Redis简介

  • Redis基于内存运行并支持持久化
  • 采用key-value(键值对)的存储形式
  • 优点:
  • 具有极高的数据读写速度
  • 支持丰富的数据类型
  • 支持数据的持久化
  • 原子性
  • 支持数据备份

五、Redis的数据类型

Redis支持物种数据类型:string(字符串),hash(哈希)、list(列表)、set(集合)、以及zset(sortedset:有序集合)

5.1 String(字符串)

  • string是redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value
  • string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象
  • string类型是redis最基本的额数据类型,string类型的值最大能存储512MB
  • 实例:set键值设置键值对get键获取键的值
    Set string1 8
    get string1
    8
    Incr string1(自增1)
    9
    Decr string1(自减1)
    8
    Decrby string1 2(减少2)
    6
    Incrby string1 5 (在基础上增加5)
    11

5.2 Hash(哈希)

  • Redis hash 是一个键值(key=>value)对集合
  • Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象
  • 实例:Hset:添加hash数据 hget:获取hash数据 hmget:获取多个hash数据

5.3 list(列表)

  • Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  • 实例:lput:从左边推入值(lpop):从左边弹出值(rpush):从右边推入值(rpop):从右边弹出值 len:查看某个list数值类型的长度

5.4 set(集合)

  • Redis的set是string类型的无序集合
  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是o(1)。
  • sadd命令 ,添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中返回0
  • sadd key member
  • scard:查看set数据中存在的元素个数
  • sismember:判断set数据中是否存在某个元素
  • srem:删除某个set数据中的元素

5.5 zset(sorted set:有序集合)

Redis zset 和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset 的成员是唯一的,但是分数(score)却可以重复。

5.6 各个数据类型应用场景

String(字符串)

二进制安全

可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M

Hash(字典)

键值对集合,即编程语言中的Map类型

适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)

存储、读取、修改用户属性

List(列表)

链表(双向链表)

增删快,提供了操作某一段元素的API

1、最新消息排行等功能

2、消息队列

Set(集合)

哈希表实现,元素不重复

1、添加、删除,查找的复杂度都是0

2、为集合提供了求集合、并集、差集等操作

1、共同好友

2、利用唯一性,统计访问网站的所有独立ip

3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐

Sorted

将sed中的元素增加

数据插入集合时,已经进行天然排序

1、排行榜

2、带权重的消息队列

六、Redis部署

##编译安装redis
tar zxvf redis-5.0.4.tar.gz
cd redis-5.0.4/
make
make PREFIX=/usr/local/redis install

## 优化路径并启动
ln -s /usr/local/redis/bin/* /usr/local/bin/
cd utils/
./install_server.sh
##修改配置文件,添加本机地址
vi /etc/redis/6379.conf
bind 192.168.40.10 127.0.0.1

## 重启
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start

## 远程连接数据库
redis-cli -h 192.168.40.10 -p 6379