博主最近在做一个练手Web项目,接触到了以前被我跳过的内容Redis,哈哈出来混迟早是要还的。于是呢在此也进行了一个简单的入门学习,拒绝懵逼状态。
在介绍Redis之前我们先谈谈什么是NoSQL。对我来说谈到NoSQL最先想到是的是啥呢,当然是Hbase,Hbase在我学习大数据的时候有过一定的了解,但是时隔一年除了知道是个啥其他的…没事,下一步就是梳理大数据的技术,学了忘<~>忘了学。
进入正文
NoSQL是什么
NoSQL(NoSQL = Not Only SQL ),意思是"不仅仅是SQL",泛指非关系型数据库,不仅仅是SQL?
为什么出现 NoSQL
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。
换句话说以下三方面成就了NoSQL
- 满足对数据库高并发的读写
- 满足对海量数据高效率存储和访问
- 满足对数据库的高可扩展性和高可用性
NoSQL的产生就是为了解决大规模数据集合多重数据种类带来的挑战,说直白点在大数据领域是个宝。
主流的NoSQL产品
直接上图,虽然我只用过Hbase。
NoSQL的分类
主要有一下四类
- 键值存储数据库(Redis)
- 列存储数据库(Hbase)
- 文档型数据库(MongoDB)
- 图形数据库(InfoGrid)
NoSQL有何特点
下面就是Redis的介绍了
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 —百度百科
支持的数据类型
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
这几种类型后面再一一介绍
Redis性能方面
官方测试完成了50个并发执行100000个请求。结果:读的速度是110000次/s,写的速度是81000次/s 。身为在校大学生的我,想想就头秃。
Redis应用场景
- 缓存(数据查询等)我想这个应该是使用的最多的
- 任务队列(秒杀)
- 应用排行
- 网站访问统计
- 分布式集群架构中session分离
Redis的安装及简单实用
搬出一台虚拟机
- 环境安装,主要是因为Redis是用C语言开发的,编译需要依赖gcc环境,所以 yum install gcc-c++ 来一手,当然有就直接跳过了。
- 利用工具将安装包传到我是传到了/root/下,用的是Xftp。
- 理算当然得解压 tar -zxvf redis-3.0.7.tar.gz。
- 编译,将源码编译为.o文件
- 进入/root/redis下用执行make安装,如果失败了那就重来,实在没招那就重装系统。
- 创建一个目录 /usr/loca/redis 作为安装目录
- cd到/root/redis 目录 make PREFIX=/usr/local/redis install
- 由于redis启动需要一个配置文件,将配置文件复制到 /root/redis/ cp /root/redis/redis.conf /root/redis
完成以上步骤了你就可以直接启动了。启动服务端 ./bin/redis-server 后你就会发现,我干不了其他的了,我还得另起窗口这不是坑爹吗?所以我也不推荐你们这样做。
8.1 后端模式
vi /usr/local/redis/redis.conf 修改配置文件
8.2 启动时,指定配置文件
8.3关闭
Redis的简单使用
在启动服务端后,在bin/执行./redis-cli,启动客户端进入以下
然后你就可以为所欲为了比如说
-
测试redis是否正确安装成功
向服务器发送 ping 命令,服务器返回 pong
向服务器发送 set name tom
get name 命令可以看到可以获取到tom的信息
向服务器发送keys *
可以查看服务器中一共有多少键值对的数据,可以查看到各个键值类型数据
-
数据类型
String
掌握的操作:
赋值
格式: set key value
例如:set username tom
取值
格式: get key
例如: get username先获取再设置 getset key value 例如: getset username jack 删 del key 例如: del d 了解: 对于数字类型 自增和自减 incr key ++ decr key -- 增加或减少指定的数量 incrby key int decrby key int 拼接字符串 append key value
List
赋值:
左边:lpush key value value2 value3
右边:rpush key value value2 value3
取值:
左边:lpop key
右边:rpush key获取所有元素 lrange 0 -1 获取元素的个数 llen key 扩展: lpushx key value :若有则添加 若没有则不添加 rpushx key value :若有则添加 若没有则不添加 lrem key count value:从左边移除count个value 若count>0 :从左边移除count个value 若count<0 :从右边移除count个value 若count=0 :从右边移除所有的value lset key index value 设置链表中指定索引的元素值 0 代表是第一个 -1代表的是最后一个
Hash:
存值
取值
删除
set
添加
sadd key value1 valuse2
删除
srem key value1 valuse2
获取
smembers key
判断是否是是set中的一员
sismember key value
运算
差集: sdiff s1 s2
交集: sinter s1 s2
并集: sunion s3 s4
获取数量
scard key
srandmember key:随机获取一个
sortedSet
添加元素
zadd key score m1 score m2
获取元素
zscore key m:获取指定成员的得分
zcard key:获取key的长度
删除元素
zrem
通用的操作:
keys * :查看所有的key
del key:删除指定的key
exists key:判断一个key是否存在
rename oldkey newkey:重命名
expire key 秒数:
ttl key :查看一个key剩余存活时间
-1:持久存活
-2:不存在
type 判断一个可以属于什么类型
总结
关于Redis入门,我感觉这些东西应该是够了,随着自己的学习,后面也会更新更加深入的Redis的知识。一想到深入学习,啧啧啧----虽然头大,但是喜欢。