淘先锋技术网

首页 1 2 3 4 5 6 7

数据类型分类

存储数据类型分类:

结构化数据:可以用过二位表格形式表述这个数据
非结构化数据:不方便以二维表格形式表述的这种类型的数据

根据不同种存储数据类型分类分成两种不同类型的数据库:

sql结构化数据库:

里面存储的数据类型是结构化数据。(别称关系型数据库)
一个结构化数据库,创建在关系模型基础上
一般面向于记录
包括Orcale、MySQL、SQL Server、 Microsoft Access、DB2等

nosql非结构化数据库:

里面存储的数据类型是非结构化数据。(别称非关系型数据库)
除了主流的关系型数据库外的数据库,都是非关系型数据库
包括Redis、MongBD、Hbase、CouhDB

非关系新数据库产生背景

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

Redis简介

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

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

类型简介特性场景
String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
Set(集合)哈希表实现,元素不重复1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合)将Set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行天然排序1、排行榜 2、带权重的消息队列

Redis安装

在这里插入图片描述
1.上传文件、解压

tar xf redis-5.0.4.tar.gz

2.编译安装

cd redis-5.0.4/
make
make PREFIX=/usr/local/redis install

3.建立软链接

ln -s /usr/local/redis/bin/* /usr/bin/

4.执行脚本

cd redis-5.0.4/utils/
./install_server.sh
 /usr/local/redis/bin/redis-server

在这里插入图片描述
Port : 6379
Config file : /etc/redis/6379.conf 配 置 文 件 路 径 \color{red}{配置文件路径}
Log file : /var/log/redis_6379.log 日 志 文 件 路 径 \color{red}{日志文件路径}
Data dir : /var/lib/redis/6379 数 据 文 件 路 径 \color{red}{数据文件路径}
Executable : /usr/local/redis/bin/redis-server 可 执 行 文 件 路 径 \color{red}{可执行文件路径}
Cli Executable : /usr/local/bin/redis-cli 客 户 端 命 令 工 具 \color{red}{客户端命令工具}

netstat -anput | grep redis

在这里插入图片描述

5.Redis命令

[root@server6 ~]# /etc/init.d/redis_6379 stop 关 闭 \color{red}{关闭}
Stopping …
Waiting for Redis to shutdown …
Redis stopped
[root@server6 ~]# /etc/init.d/redis_6379 start 开 启 \color{red}{开启}
Starting Redis server…
[root@server6 ~]# /etc/init.d/redis_6379 restart 重 启 \color{red}{重启}
Stopping …
Waiting for Redis to shutdown …
Redis stopped
Starting Redis server…
[root@server6 ~]# /etc/init.d/redis_6379 status 查 看 状 态 \color{red}{查看状态}
Redis is running (62607)

vi /etc/redis/6379.conf

在这里插入图片描述

redis-cli -h 20.0.0.16 -p 6379

在这里插入图片描述

数据类型

1.String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

实例:set 键 值 设置键值对 get 键 获取键的值

20.0.0.16:6379> Set string1 6
ok
20.0.0.16:6379>Get string1
“6”
20.0.0.16:6379>Incr string1
(integer) 7
20.0.0.16:6379> Decr string1
(integer) 6
20.0.0.16:6379> Decrby string1 3
(integer) 3
20.0.0.16:6379>Incrby string1 5
(integer) 8
20.0.0.16:6379>

2.Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

实例:Hset:添加hash数据 hget:获取hash数据 hmget:获取多个hash数据

20.0.0.16:6379> Hset hash1 key1 a
(integer) 1
20.0.0.16:6379> Hset hash1 key2 b
(integer) 1
20.0.0.16:6379> Hset hash1 key3 c
(integer) 1
20.0.0.16:6379> Hmget hash1 key1 key2 key3
1) “a”
2) “b”
3) “c”

20.0.0.16:6379> Hset hash1 field1 a1 field2 b2
(integer) 2
20.0.0.16:6379> Hmget hash1 field1 field2
1) “a1”
2) “b2”
20.0.0.16:6379>

3.List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

实例:lpush:从左边推入值 lpop:从左边弹出值 rpush:从右边推入值 rpop:从右边弹出值 llen:查看某个list数据类型的长度

20.0.0.16:6379> Lpush list1 4
(integer) 1
20.0.0.16:6379> Lpush list1 5
(integer) 2
20.0.0.16:6379>Lpush list1 6
(integer) 3
20.0.0.16:6379>Llen list1
(integer) 3
20.0.0.16:6379>Rpop list1
“4”
20.0.0.16:6379> Llen list1
(integer) 2

20.0.0.16:6379> Lpush list2 4
(integer) 1
20.0.0.16:6379> Lpush list2 5
(integer) 2
20.0.0.16:6379>Lpush list2 6
(integer) 3
20.0.0.16:6379>Lpop list2
“6”
20.0.0.16:6379>Lpop list2
“5”
20.0.0.16:6379> Llen list2
(integer) 1
20.0.0.16:6379>

4.Set(集合)

Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
sadd 命令
添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。

sadd key member
scard:查看set数据中存在的元素个数
sismember:判断set数据中是否存在某个元素
srem:删除某个set数据中的元素

实例:

20.0.0.16:6379> sadd set1 12
(integer) 1
20.0.0.16:6379> sadd set1 13
(integer) 1
20.0.0.16:6379> sadd set1 12
(integer) 0
20.0.0.16:6379> Scard set1
(integer) 2
20.0.0.16:6379> Sismember set1 11
(integer) 0
20.0.0.16:6379> Sismember set1 13
(integer) 1
20.0.0.16:6379>Srem set1 13
(integer) 1
20.0.0.16:6379>Sismember set1 13
(integer) 0
20.0.0.16:6379> Smembers set1
1) “12”
20.0.0.16:6379>

5.zset(sorted set:有序集合)

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

zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
使用方法:zadd key score member
zcard:查询
zrang:数据排序

实例:
20.0.0.16:6379>Zadd zset1 1.1 val1
(integer) 1
20.0.0.16:6379> Zadd zset1 2.2 val2
(integer) 1
20.0.0.16:6379> Zadd zset1 3.3 val3
(integer) 1
20.0.0.16:6379>Zadd zset1 3.3 val10
(integer) 1
20.0.0.16:6379> Zcard zset1
(integer) 4
20.0.0.16:6379>Zrangebyscore zset1 0 10
1) “val1”
2) “val2”
3) “val10”
4) “val3”
20.0.0.16:6379> Zrange zset1 0 10 withscores
1) “val1”
2) “1.1000000000000001”
3) “val2”
4) “2.2000000000000002”
5) “val10”
6) “3.2999999999999998”
7) “val3”
8) “3.2999999999999998”
20.0.0.16:6379>