Redis(未完待继续)

Redis:

中文官网: http://www.redis.cn/
介绍:
Redis 是一个开源软件拥有(Berkly Software Distribution 许可),他是一个内存数据结构存贮,通常用于数据库,缓存,消息代理. 它支持:字符串,哈希,列表,集 合,数组集合,位图,高压缩算法以及地图索引等数据结构。。Redis 支持集群,lua 脚本, 以及 LRU(近期最少使用 Least Recently Used)淘汰算法,事物以及不同级别的磁盘 持久化,能够提供一个高可用的 Redis Sentinel 的集群方案。
特点:
1. Redis 是把数据存放在内存当中,所以它的运行速度会非常快
2. 2. Redis 具有多种数据存储结构
3. 3. Redis 具有持久化的功能
4. 4. Redis 上的数据可以设置过期
5. 5. Redis 支持集群,而且可以自动切换
6. 6. 跨平台 支持多种语言客户端
7. Redis 用途: 缓存(StackOverFlow),数据库(微博),消息中间件(队列,微博)

Redis的安装:

安装官网参考网址:http://www.redis.cn/download.html

步骤:
1:通过xshell建立连接,下载redis并执行解压
通过wget命令 下载 网络上对应的节点资源:

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

解压: tar xzf redis-3.2.8.tar.gz

2 编译安装:
执行编译之前要先安装 gcc ,没有gcc环境的话 在编译与安装的期间就会报错
在这里插入图片描述
原因是没有 gcc 环境造成! 安装通过 yum 安装 Gcc yum install gcc
在这里插入图片描述
3 编译文件 : make && make install

编译完成后,启动服务的文件会生成在src目录下:
在这里插入图片描述
4.启动 redis 服务:

当 redis 文件被成功编译并安装后,执行 redis 服务启动,对于 redis 服务启动有 两种方式 方式一:当前操作窗口启动(此时启动之后当前窗口无法再继续其他操作!!!)
在这里插入图片描述
方式二:以后台进程方式启动 以后台进程方式启动 redis ,

此时需要修改 redis.conf 配置文件中 daemonize 默 认属性 no 修改为 yes 通过 vim 命令打开 redis3.2.8 文件夹下 redis.conf 文件 vim redis.conf
(启动服务: ./src/redis-server ./redis.conf 前面的为服务启动文件,后面为服务配置文件)

在这里插入图片描述
修改后保存并退出 后台启动 redis 服务:
在这里插入图片描述
通过 linux 客户端连接 redis 服务 在 src 目录执行命令 ./redis-cli 连接 redis 服务器

至此,redis 环境搭建成功,并可以通过 redis 客户端命令行操作 redis 服务器啦!

Vi/vim 下 搜索与查找实用命令 搜索命令: /+待查找文本

切换下一条 n 键 取消选中标记 :noh

**key相关指令介绍 : **
**五种基本数据类型: redis 提供五种数据类型: string,hash,list,set 及 sorted set
**
string 是最基本的类型,而且 string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 byte 组,最大上限是 1G 字节。1G=1024MB

string 类型数据操作指令简介:

set key value 设置 key 对应 string 类型的值, 返回 1 表示成功, 0 失败

setnx key value 如果 key 不存在, 设置 key 对应 string 类型的值。 如果 key 已经存在,返回 0。
get key 获取 key 对应的 string 值,如果 key 不存在返回 nil getsetkeyvalue 先获取 key的值, 再设置 key的值。 如果 key不存在返回 nil。

mget key1 key2 …keyN 一次获取多个 key 的值,如果对应 key 不存在则对应返回 nil。

mset key1 value1 …keyN valueN 一次设置多个 key 的值,成功返回 1 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。

msetnx key1 value1 …keyN valueN 一次设置多个 key 的值,但是不会 覆盖已经存在的 key incr key 对 key 的值做++操作, 并返回新的值。 注意 incr 一个不是 int 的 value 会返回错误, incr 一个不存在的 key,则设置 key 值为 1。

decr key 对 key 的值做–操作, decr 一个不存在 key,则设置 key 值为-1。

incrby key integer 对 key 加上指定值 , key 不存在时候会设置 key,并认 为原来的 value 是 0。

decrby key integer 对 key 减去指定值。decrby 完全是为了可读性,我们完全 可以通过 incrby 一个负值来实现同样效果,反之一样

Hash 类型

Hash 类型数据操作指令

hset key field value 设置 hash field 为指定值,如果 key 不存在,则创建 hget key field 获取指定的 hash field。

hmget key filed1…fieldN 获取全部指定的 hash filed。

hmset key filed1 value1…filedNvalueN 同时设置hash的多个 field。

hincrby key field integer 将指定的 hashfiled 加上指定值。成功返回 hash filed 变更后的值。

hexists key field 检测指定 field 是否存在。

hdel key field 删除指定的 hash field。

hlen key 返回指定 hash 的 field 数量 hkeys key 返回hash 的所有 field。

hvals key 返回hash 的所有 value。

hgetall key返回 hash的所有 filed 和 value。

List 类型
List类型数据操作指令简介

lpush/rpush 从左/右方添加
llen 返回list长度
lrange key start end 返回指定区间内的元素,start为负数表示从后计数,-1表示倒数第一个元素
ltrim key start end 返回截取的字段
lset key index value 修改指定下标的元素值
lrem key count value 删除一个数量的value值,count为正,从左删除,为负,从右删除
lpop/rpop 左弹栈/右弹栈
blpop/brpop 阻塞左/右弹栈 当删除内容为空时,阻塞

Set 类型

是无序集合,最大可以包含(2 的 32 次方-1)个元素。
set 的是通过 hashtable 实现的,所以添加, 删除,查找的复杂度都是 O(1)。
hash table 会随着添加或者 删除自动的调整大小。需要注意的是调整 hashtable 大小时候需要同(获取写锁)会阻塞其他读写操作。可能不久后就会改用跳表( skip list)来实现。 跳表已经 sortedsets 中使用了。关于 set 集合类型除了基本的添加删除操作, 其它有用 的操作还包含集合的取并集(union), 交集(intersection),差集(difference)。 通过这些操作可以很容易的实现 SNS 中的好友推荐和 blog的 tag 功能

set类型数据操作指令简介

saddkeymember 添加一个 string 元素到 key 对应 set 集合中,成功返回 1, 如果元素以及在集合中则返回 0, key 对应的 set 不存在则返回错误。

srem key member 从 key 对应 set 中移除指定元素,成功返回 1,如果 member 在集合中不存在或者 key 不存在返回 0,如果 key 对应的不是 set 类型的值返回错 误。

spop key 删除并返回 key 对应 set 中随机的一个元素,如果 set 是空或者 key 不存在返回nil。

srandmember key 同 spop,随机取 set 中的一个元素,但是不删除元素。

smove srckey dstkey member 从 srckey 对应 set 中移除 member 并添加到 dstkey 对应set 中,整个操作是原子的。 成功返回 1,如果 member 在 srckey 中 不存在返回 0, 如果 key 不是 set 类型返回错误。

Scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0。

sismember key member 判断 member 是否在 set 中,存在返回 1, 0 表示不 存在或者 key 不存在。

sinter key1 key2 …… keyN 返回所有给定 key 的交集。

sinterstore dstkey key1 … keyN 返回所有给定 key 的交集, 并保存 交集存到 dstkey 下。

sunion key1 key2 … keyN 返回所有给定 key 的并集。

sunionstore dstkey key1 …keyN 返回所有给定 key的并集, 并保存并 集到 dstkey 下。

sdiff key1 key2 …keyN 返回所有给定 key 的差集。

sdiffstore dstkey key1 …keyN 返回所有给定 key 的差集,并保存差集 到 dstkey 下。

smembers key 返回 key 对应set 的所有元素,结果是无序的。

Sorted Set 类型

Sorted Set 是有序集合, 它在 set 的基础上增加了一个顺序属性,这一属性 在添加修改元素的时候可以指定, 每次指定后, 会自动重新按新的值调整顺序。 可 以理解了有两列的 mysql 表,一列存 value,一列存顺序。操作中 key 理解为 sorted set 的名字,最多包含2>32-1 个元素 。

Sorted Set 类型数据操作指令简介

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

zrem key member 删除指定元素, 1 表示成功,如果元素不存在返回 0。

zincrby key incr member 增加对应 member 的 score 值, 然后移动元素并保 持 skip list 保持有序。返回更新后的 score值。
zrank key member 返回指定元素在集合中的排名(下标) , 集合中元素是按 score 从小到大排序的。

zrevrank key member 同上,但是集合中元素是按 score 从大到小排序。

zrange key start end 类似 lrange 操作从集合中去指定区间的元素。返回的是 有序结果 zrevrange key start end 同上,返回结果是按 score 逆序的。

zrangebyscore key min max 返回集合中 score 在给定区间的元素。

zcount key min max 返回集合中 score 在给定区间的数量。

zcard key 返回集合中元素个数。

zscore key element 返回给定元素对应的 score

Redis搭建主从复用-读写分离:

Redis 支持主从复用。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。
Mater Slave 的模式,从 Slave 向 Master 发起 SYNC 命令。 可以是 1 Master 多 Slave,可以分层,Slave 下可以再接 Slave,可扩展成树状结构。 因为没有两台电脑,所以只能在一台机器上搭建两个 Redis 服务端。

这里使用单机来模拟 redis 主从服务器 ,实现读写分离配置

步骤:

1 :新建 master和slave 文件夹

2 :拷贝redis.conf配置文件,redis-server启动程序分别到master/slave文件夹中

3 :修改主服务器的配置(vim redis.conf)

1 主端口 port改为6379
2 slave-read-only yes 从服务器默认是只读的不允许输入
3 :3. bind 121… 禁用

4 :修改从服务器的配置(vim redis.conf)

1 : 1. 端口port改为6380
2 : 3. slaveof 192.168.15.150 6379

在这里插入图片描述
在这里插入图片描述
以上两处修改完毕后 分别启动主服务与从服务器

启动端口为 6379 主服务器 ,./redis-server ./redis.conf
启动端口为 6380 从服务器, ./redis-server ./redis.conf

建立客户端连接(主、从连接建立)

连接主服务器, ./usr/software/redis-4.2.3/src/redis-cli
连接从服务器 ./usr/software/redis-4.2.3/src/redis-cli -p 6380 (指定端口)
查看服务器状态: info Replication

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值