redis 练习笔记(一)---了解,安装,基本命令练习

一,概述

1.redis

redis是一种基于键值对(key-value)数据库,其中value可以为string、hash、list、set、zset等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能,

流水线: Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器, 并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端, 使用这个功能可以有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。

2. redis特性

1〉速度快,数据放在内存中,官方给出的读写性能10万/S,与机器性能也有关

      a,数据放内存中是速度快的主要原因

      b,C语言实现,与操作系统距离近

      c,使用了单线程架构,预防多线程可能产生的竞争问题

2〉键值对的数据结构服务器

3〉丰富的功能:见上功能

4〉简单稳定:单线程

5〉持久化:发生断电或机器故障,数据可能会丢失,持久化到硬盘

6〉主从复制:实现多个相同数据的redis副本

8〉高可用和分布式:哨兵机制实现高可用,保证redis节点故障发现和自动转移

9〉客户端语言多:java php python c c++ nodejs等

3. 使用场景

a,缓存:合理使用缓存加快数据访问速度,降低后端数据源压力
b,排行榜:按照热度排名,按照发布时间排行,主要用到列表和有序集合
c,计数器应用:视频网站播放数,网站浏览数,使用redis计数
d,社交网络:赞、踩、粉丝、下拉刷新
e,消息队列:发布和订阅


4. 安装

a、下载源码,解压缩后编译源码。

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

$ tar xzf redis-4.0.6.tar.gz

$ cd redis-4.0.6

$ make

 

b、编译完成后,在Src目录下,有可执行文件redis-server、redis-benchmark、redis-cli和redis.conf配置文件。然后拷贝到一个目录下,目的时方便管理。

可执行文件

作用

redis-server

启动redis

redis-cli

redis命令行客户端

redis-benchmark

基准测试工具

redis-check-aof

AOF持久化文件检测和修复工具

redis-check-dump

RDB持久化文件检测和修复工具

redis-sentinel

启动哨兵

mkdir /usr/local/redis

cp redis-server /usr/local/redis

cp redis-benchmark /usr/local/redis

cp redis-check-rdb /usr/local/redis

cp redis-sentinel /usr/local/redis

cp redis-cli /usr/local/redis

返回上一级(redis-4.0.6根目录)拷贝redis的配置文件

cp redis.conf /usr/local/redis

 

 c、启动Redis服务。

$ /usr/local/redis/redis-server  /local/redis/redis.conf

 

 d、然后用客户端测试一下是否启动成功。

$ redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

5.redis版本

   1,版本号第二位为奇数,为非稳定版本(2.7、2.9、3.1)

   2,第二为偶数,为稳定版本(2.6、2.8、3.0)

   3,当前奇数版本是下一个稳定版本的开发版本,如2.9是3.0的开发版本

二,启动连接关闭

1. 通过配置文件启动redis服务并在后台运行:

./redis-server ./redis.conf &

2. 通过redis客户端连接redis:其中,默认host: 127.0.0.1 默认port: 6379

/redis-cli -h 127.0.0.1 -p 6379 

3. 关闭客户端连接:

exit

4. 关闭服务端

/usr/local/redis/redis-cli shutdown

注意:

   a.关闭时,断开连接,持久化文件生成,相对安全

   b.还可以用kill 关闭redis进程,此方法不会做持久化,还会造成缓冲区非法关闭,可能造成AOF喝数据丢失

   c.关闭前生成持久化文件:shutdown nosave/save

二,重要指令

1.add

expire key seconds       设置key的过期时间为seconds

set age 23 ex 10      在给键赋值的同时设置过期时间为10秒

setnx name test      创建键时校验,如果name已经存在则创建失败返回0,反之返回1.

mset name 111 age 222 address 333 desc 444 ...      批量设值

 

 

2.delete 

del key        返回删除键的个数,不存在return 0

3.update

incr age        自增1,仅限于age为整数时,否则报错。

decr age      自减1,仅限于age为整数

incrby age 2   自增指定值2,仅限于age为整数

decr age 2      自减2

incrbyfloat score 2.2       浮点型,自增2.2

append name lastname       追加

4.query

keys *      查看所有键

dbsize      查看键总数

exists key      检查键值是否存在,存在return 1,否则return 0

ttl key      查看剩余的过期时间

type key      查看键的数据结构类型

mget name age address desc       批量获取值

strlen key       查询key的长度

getrange key 0 2        查询key的子字符串,范围0 2 

object encoding age      查看age 的内部编码

select 2       切换数据库

5. attention

a.redis 是单线程架构

列举例子:三个客户端同时执行命令
         客户端1:set name test
         客户端2:incr num
         客户端3:incr num
执行过程:发送指令-〉执行命令-〉返回结果
执行命令:单线程执行,所有命令进入队列,按顺序执行,使用I/O多路复用解决I/O问题,(由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务 ,IO多路复用模型是建立在内核提供的多路分离函数select基础之上的,使用select函数可以避免同步非阻塞IO模型中轮询等待的问题)
单线程快原因:纯内存访问, 非阻塞I/O(使用多路复用),单线程避免线程切换和竞争产生资源消耗
问题:如果某个命令执行,会造成其它命令的阻塞


b.redis 的String 字符串

字符串类型:实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB

 

c.redis的批量操作,mset mget 与set get 的区别

set get 执行流程

mset mget 执行流程

d. redis 密码设置

修改配置文件redis.conf 中的requirepass 的值。

启动时指定配置文件启动 ./redis-server redis.conf

客户端连接时输入密码连接  ./redis-cli -h 127.0.0.1 -p 6379 -a xxx

本地连接不需要密码也能连接成功,但没有任何权限

可以在客户端查看密码      CONFIG GET requirepass

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值