redis 学习笔记

 

1、什么是NoSql

        为了解决高并发、高可扩展(集群)、高可用(不能宕机)、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。

NoSql  :全称 not only sql ,非关系型数据库。可以作为关系型数据库的一个很好的补充。不能替代。

 

2、什么是redis

        Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库(nosql),应用在缓存。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有5种。

如下:

字符串类型 (String)

散列类型(hash)

列表类型(List)

集合类型(set)

有序集合类型(SortedSet)(Zset)

 

3、redis的应用场景

缓存。

分布式集群架构中的session分离。

任务队列。(秒杀、抢购、12306等等)

应用排行榜。(SortedSet)

网站访问统计。

数据过期处理。(expire)

 

 

4、Redis的安装

yum -y install gcc-c++

安装步骤:

第一步:将redis的源码包上传到linux系统。

第二步:解压缩redis的源码包。

第三步:进行编译。 cd到解压后的目录 输入命令:make   

第四步:进行安装。 输入命令:make install PREFIX=/usr/local/redis

PREFIX 必须是大写的。

第五步:检查目录是否存在。

在/usr/local/redis 下 有bin 说明安装成功。

 

5、redis服务端启动

  • 后台启动:

第一步:把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下

[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

第二步:使用vim命令修改redis.conf配置文件 将daemonize no修改为daemonize yes

第三步:输入启动命令

[root@localhost bin]# ./redis-server redis.conf

第四步:检查redis进程:

[root@localhost bin]# ps -ef|grep redis

 

6、客户端Redis-cli连接redis

  • 使用Redis-cli建立连接:

[root@localhost bin]# ./redis-cli

默认连接localhost运行在6379端口的redis服务。

[root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379

-h:连接的服务器的地址

-p:服务的端口号

 

  • 退出连接:

第一种:

[root@localhost bin]# ./redis-cli

127.0.0.1:6379> quit

第二种:

[root@localhost bin]# ./redis-cli

127.0.0.1:6379> exit

第三种:CTR+C

[root@localhost bin]#

 

7、关闭Redis服务

第一种:通过连接上客户端进行关闭,使用shutdown 命令。

或者:cd 到redis的bin 目录  再执行以下:

[root@localhost bin]# ./redis-cli shutdown

第二种:使用 kill 命令。

找到对应的redis的进程id 然后使用命令:(pid为进程id)

kill -9 pid

 

8、Redis五种数据类型

8.1、String:key-value

redis命令不区分大小写,但是key区分的

redis中的数据都是字符串。

redis是单线程,(不适合存储比较大的数据)

 

使用incr  命令,如果key 不存在,会自动创建key 并自动+1.(Integer数据(虽然本身是String))

 redis中所有的数据都是字符串。

 set key value 设置值

 get key 获取值

 incr key 加一

 decr key 减一

 

 

8.2、Hash: key-field-value

相当于一个key 对应一个map (map中又是key- value),

    应用于归类

 

hset  key field value  设置值

    hget  key field       获取值

hincrby key field num  设置增数量

 

8.3、List

List是有顺序可重复(数据结构中的:双链表,队列)

可作为链表 ,从左添加元素  也可以从右添加元素。

 

lpush list a b c d    (从左添加元素)

    rpush list 1 2 3 4    (从右边添加元素)

    lrange list 0 -1 (从0 到 -1 元素查看:也就表示查看所有)

    lpop list (从左边取,删除)

    rpop list  (从右边取,删除)

 

8.4、Set

Set无顺序,不能重复

  sadd set1 a b c d d (向set1中添加元素) 元素不重复

  smembers set1 (查询元素)

  srem set1 a (删除元素)

 

8.5、SortedSet(zset)

有顺序,不能重复

适合做排行榜 排序需要一个分数属性

 

zadd zset1 9 a 8 c 10 d 1 e   (添加元素 zadd key score member )

(ZRANGE key start stop [WITHSCORES])(查看所有元素:zrange key  0  -1  withscores)

 

如果要查看分数,加上withscores.

 

zrange zset1 0 -1 (从小到大)

 

zrevrange zset1 0 -1 (从大到小)

 

zincrby zset2 score member (对元素member 增加 score)

 

9、key 命令

expire key second  (设置key的过期时间)

ttl key (查看剩余时间)(-2 表示不存在,-1 表示已被持久化,正数表示剩余的时间)

persist key (清除过期时间,也即是持久化 持久化成功体提示 1 不成功0)。

del key: 删除key  

EXISTS key

若key存在,返回1,否则返回0。

select 0 表示:选择0号数据库。默认是0号数据库

 

10、Redis持久化方案

Redis 数据都放在内存中。如果机器挂掉,内存的数据就不存在。

需要做持久化,讲内存中的数据保存在磁盘,下一次启动的时候就可以恢复数据到内存中。

 

1.RDB   快照形式  (定期将当前时刻的数据保存磁盘中)会产生一个dump.rdb文件

特点:会存在数据丢失,性能较好,数据备份。

2.AOF   append only file  (所有对redis的操作命令记录在aof文件中),恢复数据,重新执行一遍即可。

特点:每秒保存,数据比较完整,耗费性能。

 

redis 默认开启RDB

如下图:redis.conf中默认设置了保存规则及时间间隔

AOF开启设置:

修改 redis.conf 文件  如下图:

将appendonly 设置为yes

同时开启两个持久化方案,则按照 AOF的持久化放案恢复数据。

 

默认是按照rdb的方式恢复数据,如果开启了AOF,就是用AOF恢复数据,数据是存在于/usr/local/redis/bin/appendonly.aof文件中

 

 

11、Redis集群的搭建

redis-cluster架构图

 

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.通过投票机制

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值