什么是Redis?

* Redis是一种高级key-value数据库。
* Redis:REmote DIctionary Server(远程字典服务器)
* Redis 是完全开源免费的,用C语言编写的,遵守BSD协议
* 是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库
* 是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器

Redis 与其他 key - value 数据库的对比

* **Redis支持数据的持久化**,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
* **Redis数据结构类型丰富**:不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
* **Redis支持数据的备份**,即master-slave模式的数据备份
* 下图展示了一些数据库和缓存服务器的特性与功能
![](https://img2020.cnblogs.com/blog/1756476/202004/1756476-20200414175716515-1116925459.png)

Redis 能干什么

* 根据Redis的特性,简单列举几个应用场景:
+ 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务Redis可以用作主数据库 (primary database) 或者其他存储系统的辅助数据库 (auxiliary database)
+ 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
+ 模拟类似于HttpSession这种需要设定过期时间的功能
+ 发布、订阅消息系统
+ 定时器、计数器

Redis的安装配置

* Linux虚拟机安装
+ 本教程使用的是 VMWare虚拟机,Linux系统使用的RedHat系列的 CentOS6.5 版本。
* Linux 版安装
+ 下载地址 :https://redis.io/download 下载最新版本的Redis。
* Redis安装
+ 下载获得 redis-5.0.4.tar.gz 后,拷贝到我们的/usr/soft目录
+ 使用 tar 命令解压文件
- > tar -zxvf redis-5.0.4.tar.gz
+ 进入 redis-5.0.4 目录,执行 make ,编译源代码
- 如果采用linux最小安装,make命令会出现 command not found 错误,解决方式
- > 先执行: yum -y install gcc automake autoconf libtool make
- > 安装g++: yum install gcc gcc-c++
- 如果出现: error: jemalloc/jemalloc.h: No such file or directory
- > 原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。make MALLOC=libc
+ 编译后继续执行 make install , 进行安装,默认安装到了 /usr/local/bin 目录下
- > make install PREFIX=/usr/local/redis
+ 安装成功
- > 总用量 12948
- > -rw-r--r--. 1 root root 92 4月 18 19:40 dump.rdb(配置文件)
- > -rwxr-xr-x. 1 root root 353808 4月 18 19:30 redis-benchmark(性能测试工具,可以在自己本子运行,看性能)
- > -rwxr-xr-x. 1 root root 4030624 4月 18 19:30 redis-check-aof(修复有问题的AOF文件)
- > -rwxr-xr-x. 1 root root 4030624 4月 18 19:30 redis-check-rdb(同上)
- > -rwxr-xr-x. 1 root root 794352 4月 18 19:30 redis-cli(客户端,操作入口)
- > lrwxrwxrwx. 1 root root 12 4月 18 19:30 redis-sentinel -> redis-server(redis集群使用)
- > -rwxr-xr-x. 1 root root 4030624 4月 18 19:30 redis-server(Redis服务器启动命令)

Redis启动和连接

* 使用 redis-server 命令可以启动Redis服务器。
* Redis默认的端口号是6379,下图展示的是在非守护线程下启动,并且使用的是redis默认的配置文件 /usr/soft/redis-5.0.4/redis.conf
+ 注意在当前目录不能启动
- > cd /usr/local/redis
- > ./bin/redis-server
![](https://img2020.cnblogs.com/blog/1756476/202004/1756476-20200414175750751-1818460156.png)

上面开启的是非守护线程下启动(独占模式),下面我们来做成后台运行模式

* 如果需要修改 redis 的默认配置,建议将配置文件复制一份
+ > cp /usr/soft/redis-5.0.4/redis.conf /usr/local/redis/
* 配置说明
+ 编辑刚复制过来的配置文件
- > vim redis.conf
- > 如果没有vim,可以执行yml install vim下载
- > 由于配置文件中配置众多,我们可以采用:/port 这样搜索
+ Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
- > daemonize yes
+ 指定Redis监听端口,默认端口为6379.
- > port 6479
+ 绑定的主机地址
- > bind 127.0.0.1
* 然后使用启动Redis并且使用自己刚复制过来的配置文件
+ > bin/redis-server /usr/local/redis/redis.conf
* 查看Redis是否启动
+ > ps -ef | grep redis

连接Redis服务器:永远的Helloworld

* 连接(如果配置文件修改了端口,后面加上 -p)
+ > bin/redis-cli -p 6479
* 进入Redis指定密码
+ > auth 123456
* 关闭Redis服务
+ > bin/redis-cli -a 123456 shutdown

Redis启动后的基础知识讲解

* 默认16个数据库,可以通过 select 命令切换数据库
* Dbsize查看当前数据库的key的数量
* keys * 列出所有的键值
* Flushdb:清空当前库
* Flushall;通杀全部库(慎用)
* 统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
* Redis索引都是从零开始
* 为什么默认端口是6379 :因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

Redis的五大数据类型

* Redis 可以存储键与5种不同的数据结构类型之间的映射
* 最简单的 String
* 存储多个 List
* 唯一的无序 Set
* 有序 Zset
* 保持键值对 Hash
![](https://img2020.cnblogs.com/blog/1756476/202004/1756476-20200414175806760-1353799787.png)

Redis 键 key

* Redis 的键命令用于管理 redis 的键,该命令是通用的 key 命令,适用于所有的数据类型。
* 常用案例:
+ keys * : 列出当前数据库中所有的键
+ exists key : 判断某个key是否存在
+ move key db : 移动key到另外一个库,当前库就没有了
+ expire key time(秒数): 设置键的过期时间
+ ttl key: 查看key的过期时间: -1: 永不过期, -2: 已经过期
+ type key: 查看 key 的类型
* Redis字符串(string)
+ Redis 字符串类型是使用 Redis的key时最简单的一种类型
+ 这也是 memcached 中唯一支持的数据类型
+ 当我们使用 string 数据类型时,值也是 string 类型的
+ 下面我们来看下string 类型的用法
- set/get: 设置和设置给定的key的值
- append: 为指定的key 追加值。如果key 已经存在,将值追加到末尾,如果不存在,则执行 set
- strlen: 获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。
- Incr(+1)/decr(-1)/incrby(指定长几 incrby 2)/decrby(指定降几): 一定要是数字才能进行加减
- getrange/setrange: 获取或者设置指定区间范围的值
- (从0开始)
- mget/mset: 同时获取后者设置多个 key-value 对
- > mset IOS Apple price 9999 color Silver
- getset: 先get再set,返回原先的value值
- > mget IOS Apple
* Redis 列表(list)
+ 类似于Java中的数组
+ Redis 对链表(linked-list) 的支持使得它在键值存储的世界中独树一帜。
+ Redis列表是简单的字符串列表,按照插入顺序排序。
+ 下面列举一些常用的list命令:
- rpush: 将一个或多个值插入到列表的尾部(最右边)
- lpush: 命令将一个或多个值插入到列表头部。
- lrange: 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素,1 表示列表的第二个元素,以此类推.你也可以使用负数下标,以 ­1 表示列表的最后一个元素,2 表示列表的倒数第二个元素,以此类推。
- lpop / rpop: 移除并返回列表的第一个/最后一个元素
- lindex: 通过索引获取列表中的元素.你也可以使用负数下标,以 ­1 表示列表的最后一个元素,以此类推
- ltrim: 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在区域内将会被删除
- lset: 通过索引来设置元素的值。 当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
- > lset fruits 0 juzi 把第一个改成juzi,重新赋值
linsert: 用于在列表的元素前或者后插入元素
* Redis 集合(set,不能重复)
+ Redis的集合和列表都可以存储多个字符串
+ 下面猎取一些常用的 Set 命令:
- sadd: 把爱好放入到Set集合中
- > sadd hobbies eat eat sleep
- smembers: 查看集合中的值
- > SMEMBERS hobbies
- sismember: 查看爱好集合中是否存在某个爱好
- scard : 命令返回集合中元素的数量
- srem : 用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
- srandmember : 用于返回集合中的一个或者多个随机元素
- spop : 用于移除并返回集合中的一个随机元素
- sdiff / sinter / sunion :  返回集合的差集 、交集、并集
* Redis 有序集合 Zset (sorted set)
+ 有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member)
+ Zset中常用的命令
- zadd :用于将一个或多个成员元素及其分数值加入到有序集当中.
- zrange : 返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序
- Zrangebyscore :返回有序集合中指定分数区间的成员列表
- zrem : 用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
- zcard : 用于计算集合中元素的数量
- zcount : 用于计算有序集合中指定分数区间的成员数量
- zrevrank : 返回有序集中成员的排名
* Redis 哈希(hash)
+ Redis Hashes 可以存储多个键值对之间的映射,是字符串字段和字符串值之间的映射
+ 所以它们是完美的表示对象(eg:一个有名,姓,年龄等属性的用户)的数据类型
- hmset computer brand Lenovo price 5699 color black 储存
- hgetall computer 输出
+ Redis hash 常用的命令有
- hset / hget :用于为哈希表中的字段赋值 。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,旧值将被覆盖
- hmset / hmget / hgetall :  用于同时将多个 field­value (字段­值)对设置到哈希表中。或者同时获取多个 field­value值。
- hdel : 用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略
- hlen : 用于获取哈希表中字段的数量.
- hexists : 用于查看哈希表的指定字段是否存在。
- hkeys / hvals : 获取所有的字段 、 字段值
- hincrby / Hincrbyfloat:为哈希表 key 中的指定字段的整数值(浮点数值)加上增量 increment

Redis入门使用 -- 个人总结的更多相关文章

  1. 安装redis入门

    redis官网:redis.io redis版本用的是redis-3.2.2 $ wget http://download.redis.io/releases/redis-3.2.2.tar.gz $ ...

  2. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  3. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

  4. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

  5. Redis入门教程:特性及数据类型的操作

    虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍.是一个很不错的Redis入门 ...

  6. 【原】Redis入门教程

    最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...

  7. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  8. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

  9. redis入门(15)redis的数据备份和恢复

    redis入门(15)redis的数据备份和恢复

  10. redis入门(14)redis集群下的数据分区存储

    redis入门(10)redis集群下的数据分区存储

随机推荐

  1. Thinking in Java学习杂记(5-6章)

    Java中可以通过访问控制符来控制访问权限.其中包含的类别有:public, "有好的"(无关键字), protected 以及 private.在C++中,访问指示符控制着它后面 ...

  2. 递归回溯法求N皇后问题

    问题描述:在一个NN(比如44)的方格中,在每一列中放置一个皇后,要求放置的皇后不在同一行,同一列,同一斜线上,求一共有多少种放置方法,输出放置的数组. 思路解析:从(1,1)开始,一列一列的放置皇后 ...

  3. [Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted

    字面意思大概就是: [干预]忽略尝试取消带有cancelable = false的touchmove事件的尝试,例如,因为滚动正在进行并且无法中断. 解决方法: 1.添加样式更改 将滑动报错的标签样式 ...

  4. SFDC 401认证准备及考试

    401认证准备及考试 刚过了401的认证,一些个人的体会,希望能帮助到准备过401的朋友. 1. 考试只是手段,不是目的.这个链接的视频请认真看完,http://www.salesforcetrain ...

  5. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  6. 二、【Docker笔记】Docker的核心概念及安装

    Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 ​ Docker镜像其实与虚拟机镜像很类似, ...

  7. 宝塔phpmyadmin可能问题及解决方法

    1. 端口问题检查宝塔phpmyadmin的默认端口888是否放行,和在服务器的安全组规则有没有添加888端口 2.phpmyadmin的php版本问题 在phpmyadmin的设置里的版本选择php ...

  8. JS 剑指Offer(五) 二叉树的重建

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 题目分析:已知二叉树的前序和中序遍历,根据前序遍历和中序遍历的规则,前序遍历的第一 ...

  9. 1006 Sign In and Sign Out (25 分)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  10. .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

    1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...