NOSQL 数据库之REDIS
一、Nosql
1、简介
Nosql(not only sql),泛指非关系型数据库
特点:
Nosql通常是以key->value形式存储
不支持sql语句,没有表结构
2、优缺点
优点:
高并发读写性能强悍
大数据 量的扩展(分布式存储)强悍
配置简单
灵活、高效的操作与数据模型
低廉的成本
缺点:
没有正式的官方支持
没有统一的标准
各种产品还不算成熟
3、常见的nosql产品
Redis(新浪微博)MONGDB(优酷视频,视觉中国网站)
二、redis介绍
1、概述
Redis是Remote dictionary Server(远程数据服务)的缩写
由意大利人antirez开发的一款内存高速缓存数据库
该软件使用c语言编写,他的数据模型为key->value
它支持存储的value类型包含string(字符串),hash(哈希),set(集合),Zset(有序集合),list(链表)
为了保证效率数据都是存在内存中,他也可以周期性的把更新的数据写入磁盘或者修改操作写入追加的记录文件
2、特点
1:高速读取数据(in-memory[存在缓存中所以告诉])
2:减轻数据库负担
3:有集合计算功能(优于普通数据库和同类别产品)[社交网站:计算朋友关系交集、并集、差集]
4::多种数据机构支持
3、适合场合及优势
1:[sort Set]排行榜应用,取top n 操作,例如sina微博热门话题
2:[list]获取最新N个数据或某个分类的最新话题
3:计算器应用
4:[Set]sns(social network site) 获取共同的好友
5:[Set]防攻击系统(ip判断)等。(记录用户账号密码次数,多次错误登录进行锁定)
4、与memcache(存储在内存)比较说明
Redis与memcache比较
1:数据类型:memcache支持的数据类型就是字符串,redis支持的数据类型有字符串,哈希,集合,有序记录,链表。
2:持久化:么么cache数据是存储到内存里面,一旦断电货重启,则数据丢失,redis数据也是存储在内存里面的,但是可以持久化,周期性的把数据给保存到硬盘里面,重启或断电不会丢失
3:数据量:memcache一个存储键的数据量最大是1M而redis的一个键值存储最大量是1G的数据量
三、安装启动
1:安装软件
(1):下载软件
(2):上传到linux服务器
在linux下一般用scp这个命令来通过ssh传输文件。
scp /path/filename username@servername:/path
例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中
(3):解压软件
解压缩命令:
命令格式:tar -zxvf 压缩文件名.tar.gz
tar -zvxf 解压文件名 -C 要解压的路径
(4)、进入解压目录
Cd /目录
(5)、无需配置直接编译
Make /直接执行make编译
(6)、执行安装
Make PREFIX=/usr/local/redis(路径) install
redis-benchmark命令性能测试命令
redis-check-aof和redis-check—dump是日志检测工具
redis-server 服务器端启动命令
redis-cli 是客户端连接服务器的命令
(7)、复制配置文件
从redis解压目录里面的redis.conf 复制到安装目录下面redis.conf
cp /hoe/my/目录 redis.conf
2:启动redis服务
语法命令 配置文件
.相对路径写法 /bin redis-server redis.conf
使用绝对路径 /usrr/local/redis/bin/redis-server /usrr/local/redis/bin/ redis.conf
查看是否成功
Netstat –tunpl Grep 6379 默认端口
3:客户端连接redis服务
语法:连接命令 –h 主机ip –p 端口号
本地连接,直接输入连接命令即可
redis-cli是客户端连接服务器的命令
./bin/redis-cli
4:关闭redis服务
停止redis实例
我们可以使用 /usr/local/redis/bin/redis-cli shutdown
也可以使用 pkill redis-server
Killakk redis-server
Netstat –tunpl Grep 6379 为空表示已关闭了redis服务
四、数据类型讲解
1:字符串(string)
String是reids 最基本的类型
Redis的类型可以包含任何数据,也包括jpg图片或者序列化的对象
单个value值最大上限是1G字节,如果只用string类型,redis就可以被看做加上持久化性(服务器重启之后,数据不会丢失)的memcache
- set
设置键 值
语法 set 键名称 值
Set name mayun
Set age 10
Set email 111@163.com
(2) get
获取可以对应的string值,如果key不存在返回null
语法::get 键值
Get name
Get age
(3)incr
对key的值做加加操作,并返回新的值,每执行一次值加1,值类型是数据类型
语法 : incr key
(4)incrby
指定相加的值
2:hash
hash可以用来存储对应mysql中一行的数据,类似于关联数组
构造hash的键
第一条记录
Userid:1(键) id 1 name xiaobao age 12 email xiaobao@souhu.com (值)
第二条记录
Userid:2 id 1 name xiaobao1 age 12 email xiaobao1@souhu.com
(1)hset
设置哈希里面的field和value的值。
语法:
Hset 哈希的名称(键名称) field value
(2) hget
获取哈希里面的field的值
语法:hget 哈希的名称(键名称)指定的field
(3)hmset
一次性设置多个field和value
Hmset 哈希的名称 field1 name1 field2 name2 field3 name3
(4)Hmget
一次性获取多个field 和value
语法 哈希的名称 field1 field2 field3
(5)hgetall
获取指定哈希中所有的field和value
语法:
Hgetall 哈希的名称