Redis部署安装

数据库类型

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

存储数据类型分类

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

一个结构化的数据库,创建在关系模型基础上
—般面向于记录
包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等

非关系型数据库

除了主流的关系型数据库外的数据车,都认为是非关系型
包括Redis、MongBD、Hbase、CouhDB

非关系型数据库产生背景

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

Redis简介

Redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式

**优点**
	
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备

Redis支持五种数据类型

1.string(字符串)
	string是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value
	string类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象
	string类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB
2. hash(哈希)
	Redis hash 是一个键值(key=>value)对集合
	Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
3. list(列表)
	Redis列表是简单的字符串列表,按照插入顺序排序
	可以添加一个元素到列表的头部(左边)或者尾部(右边)
4. set(集合)
	Redis 的 Set 是 string 类型的无序集合
	集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
sadd命令
	添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
	scard:查看set数据中存在的元素个数
	sismember:判断set数据中是否存在某个元素
	srem:删除某个set数据中的元素
5. zset(sortedset:有序集合)
	Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员
	不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
	zset的成员是唯一的,但分数(score)却可以重复
	zadd 命令
	添加元素到集合,元素在集合中存在则更新对应score
	zcard:查询
	zrang:数据排序
类型简介特性场景
String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1.最新消息排行等功能(比如朋友圈的时间线) 2.消息队列
Set(集合)哈希表实现,元素不重复1.添加、删除,查找的复杂度都是 O(1) 2.为集合提供了求交集、并集、差集等操作1.共同好友 2.利用唯一性,统计访问网站的所有独立ip 3.好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set将Set中的元素增加数据插入集合时,已经进行天然排序1.排行榜 2.带权重的消息队列
Set(有序集合)一个权重参数score,元素按score有序排列

redis与memcached比较

支持的存储类型不同

虽然redis和memcached都是内存型数据库,并且memcached不仅能够存储string类型,还能够存储图片、文件、视频等格式的文件。然而对于更多的使用内存数据库做缓存以及分布式方案的程序开发者来说,memcached提供的string类型存储的应用场景非常有限,而存储图片视频的功能又十分鸡肋(许多公司的用户场景是没这方面需求)。相比之下,redis提供set,hash,list等多种类型的存储结构,非常适合分布式缓存的实现。

数据落盘

memcached 数据不可恢复,虽然大多数人使用缓存以及分布式方案都不会要求数据持久化,但是谁也不能保证不出现万一的情况。一旦发生稳定性问题,memcached挂掉后,数据是不可恢复的,而redis除了支持在配置里打开数据落盘(RDB),还能通过aof来找回数据。

内存空间与数据量

memcached可以修改最大内存,使用的是LRU算法,而redis目前底层使用了自己的VM,引入了新的特性突破了物理内存的限制。个人认为在这方面依然是redis更加优秀一些。value值-redis最大可以达到1GB,而memcache只有1MB;

使用场景

会话缓存(SessionCache)
最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的

全页缓存(FPC)
基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC

队列
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作

排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构

发布/订阅
最后(但肯定不是最不重要的)是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统

其他
但是如果是对缓存的数据格式有更多的要求,且对安全性也有很高的要求的话,建议还是使用redis,这也是redis目前正在逐渐代替memcached的根本原因

**总结**
MemcachedRedis
类型Key-value数据库Key-value数据库
过期策略
数据类型单一数据类型五大数据类型
持久化×
主从复制×
虚拟内存×

安装Redis

上传,解压

tar xf 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/bin/

安装数据库

cd redis-5.0.4/utils/
./install_server.sh

全部回车
在这里插入图片描述

netstat -anpt | grep redis

在这里插入图片描述

修改配置文件

vi /etc/redis/6379.conf
	bind 192.168.1.10 127.0.0.1                   #增加本机地址

在这里插入图片描述

重启服务

/etc/init.d/redis_6379 stop 	
/etc/init.d/redis_6379 start

连接redis

redis-cli -h 192.168.1.10 -p 6379

在这里插入图片描述

数据类型

string(字符串)
实例:set 键 值 设置键值对 get 键 获取键的值

set chen 5                     #chen为键名称,10为键的值,可自行设定

在这里插入图片描述
查看类型

type chen

在这里插入图片描述

获取键的值

get chen

在这里插入图片描述

增加键的值

incr chen

在这里插入图片描述
减少键的值

decr chen

在这里插入图片描述

指定增加键的值的幅度

incrby chen 5 	#指定增加键的值+5

在这里插入图片描述
指定减少键的值的幅度

decrby chen 5    #指定减少键的值-5

在这里插入图片描述

hash(哈希)

单个字段存入

hset hash1 key1 a    #存入N个单独字段

在这里插入图片描述
多个字段存入

Hset hash1 field1 a1 field2 b2

在这里插入图片描述

List(列表)

左入3个列表
lpush:从左边推入值 lpop

lpush list1 1
lpush list1 2
lpush list1 3

从左边弹出值 rpush 从右边推入值 rpop

lpop list1

在这里插入图片描述

查看列表长度

llen list1

列出所有list1的值

lrange list1

在这里插入图片描述

从右边弹出值

rpop list1

再次列出所有list1的值
在这里插入图片描述

set(集合)

添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0

sadd set1 1
sadd set1 2
sadd set1 2

在这里插入图片描述
查看set数据中存在的元素个数

scard set1

在这里插入图片描述

判断set数据中是否存在某个元素

 sismember set1 1            #有就查到 没有就查不到

在这里插入图片描述

删除某个set数据中的元素

srem set1 1		#  删除
sismember set1 1   	#  查看

在这里插入图片描述
列出set1所有值
添加元素列出

sadd set1 5
sadd set1 10
sadd set1 1
sadd set1 4

在这里插入图片描述
zset(sortedset:有序集合)

添加元素到集合,元素在集合中存在则更新对应score

zadd zset1 1.1 val1
zadd zset1 2.2 val2
zadd zset1 3.3 val3
zadd zset1 1 val5

在这里插入图片描述

zrang:数据排序

zrange zset1 0 10 withscores

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值