专栏首页每天学JavaLinux部署Redis(单机版)

Linux部署Redis(单机版)

当数据库数据量过大的时候,大量的IO操作会成为网站性能的瓶颈,而Redis可以大量减少与数据库的交互,提高网站性能。

这一篇文章我们首先来看一下在Linux上面如何安装Redis(单机版),以及Redis的一些常用命令。注:新版的小程序已经审核通过,现在已上线。每天学Java小程序每天都会更新面试题库,在文章的末尾,有今天更新题库列表和小程序图片链接。感兴趣赶快去看看吧。

01

Redis简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。

Redis的优势:

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

02

安装Redis

在Linux服务器部署Redis,我们首先是下载Redis的安装包。

我们进入Redis的官网(https://redis.io/download)会看到下面这个界面:

其中Stable是稳定版,我们通常会下载这个版本的压缩包,上面描述中我们可以看到当前的稳定版是4.0发布于2017年7月。

Unstable就是不稳定版,上面对不稳定版本的描述是:仅适用于核心黑客。仅在需要测试最新功能或性能改进时使用。这将是几个月内Redis的下一个版本。

Beta5.0版本用于引入具有使用者组的新流数据类型,阻止弹出操作的排序集,RDB中的LFU / LRU信息,redis-cli中的集群管理器,活动碎片整理V2,HyperLogLogs改进以及许多其他较小的改进

Docker:可以从Docker Hub获取Redis的Docker镜像。有多个版本可供使用,通常在新版本发布后的短时间内更新。

那么我们下载稳定版本就可以了:

你可以点击下载,将压缩包下到本地,然后通过工具(FTP,Xshell)上传到我们的服务器当中。

你也可以这样来下载(推荐):

我们检查页面元素,找到下载的链接,复制下来。在Linux使用wget 命令直接下载。

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

下载后我们使用tar -zxvf 命令解压压缩包。

然后进入到解压后文件夹中

使用make命令

$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
$ tar xzf redis-4.0.11.tar.gz
$ cd redis-4.0.11
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下,下面是启动redis。

$ cd src
$ ./redis-server
------------------------
$ cd src
$ ./redis-server ../redis.conf

注意这种方式启动redis 使用的是默认配置。也可以通过第二种启动参数告诉redis使用指定配置文件启动。现在我们来测试一下。我们可以理解为redis-cli命令进入到一个客户端程序,其中foo是key,bar是值。

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

到这里我们已经安装好redis,并且启动成功。下面我们来看一下,redis一些常用命令。

03

Redis常用命令

关于key

keys * 获取所有的key

[root@VM_117_227_centos src]# ./redis-cli 
127.0.0.1:6379> key *
(error) ERR unknown command `key`, with args beginning with: `*`, 
127.0.0.1:6379> KEYS *
1) "studyJava"
127.0.0.1:6379> 

select 0 选择第一个库

move myString 1 将当前的数据库key移动到某个数据库,目标库有,则不能移动

flush db 清除指定库

randomkey 随机key

type key 类型

set key1 value1 设置key

get key1 获取key

mset key1 value1 key2 value2 key3 value3

mget key1 key2 key3

del key1 删除key

exists key 判断是否存在key

expire key 10 10过期

pexpire key 1000 毫秒

persist key 删除过期时间

string

set name cxx

get name

getrange name 0 -1 字符串分段

getset name new_cxx 设置值,返回旧值

mset key1 key2 批量设置

mget key1 key2 批量获取

setnx key value 不存在就插入(not exists)

setex key time value 过期时间(expire)

setrange key index value 从index开始替换value

incr age 递增

incrby age 10 递增

decr age 递减

decrby age 10 递减

incrbyfloat 增减浮点数

append 追加

strlen 长度

getbit/setbit/bitcount/bitop 位操作

hash

hset myhash name cxx

hget myhash name

hmset myhash name cxx age 25 note "i am notes"

hmget myhash name age note

hgetall myhash 获取所有的

hexists myhash name 是否存在

hsetnx myhash score 100 设置不存在的

hincrby myhash id 1 递增

hdel myhash name 删除

hkeys myhash 只取key

hvals myhash 只取value

hlen myhash 长度

list

lpush mylist a b c 左插入

rpush mylist x y z 右插入

lrange mylist 0 -1 数据集合

lpop mylist 弹出元素

rpop mylist 弹出元素

llen mylist 长度

lrem mylist count value 删除

lindex mylist 2 指定索引的值

lset mylist 2 n 索引设值

ltrim mylist 0 4 删除key

linsert mylist before a 插入

linsert mylist after a 插入

rpoplpush list list2 转移列表的数据

set

sadd myset redis

smembers myset 数据集合

srem myset set1 删除

sismember myset set1 判断元素是否在集合中

scard key_name 个数

sdiff | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集

srandmember 随机获取集合中的元素

spop 从集合中弹出一个元素

zset

zadd zset 1 one

zadd zset 2 two

zadd zset 3 three

zincrby zset 1 one 增长分数

zscore zset two 获取分数

zrange zset 0 -1 withscores 范围值

zrangebyscore zset 10 25 withscores 指定范围的值

zrangebyscore zset 10 25 withscores limit 1 2 分页

Zrevrangebyscore zset 10 25 withscores 指定范围的值

zcard zset 元素数量

Zcount zset 获得指定分数范围内的元素个数

Zrem zset one two 删除一个或多个元素

Zremrangebyrank zset 0 1 按照排名范围删除元素

Zremrangebyscore zset 0 1 按照分数范围删除元素

Zrank zset 0 -1 分数最小的元素排名为0

Zrevrank zset 0 -1 分数最大的元素排名为0


跟小伙伴们分享一下这一周的推送安排,大家可以重点关注自己喜欢的文章:

九月15号周六:Linux部署Redis(单机版)

九月16号周日:Spring Boot集成Redis

那么今天小程序更新的题库是什么呢?

今天小程序更新的题目是:

1.Redis 常见的性能问题都有哪些?如何解决?

2.网站如果为了保证高可用,会采取什么样的形式解决单点问题?

3.redis数据淘汰策略

4.什么是缓存雪崩

5.什么是缓存穿透

6.redis如何实现过期策略

本文分享自微信公众号 - 每天学Java(gh_fddfb9d03324),作者:每天学Java

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Boot集成Redis

    “ 在昨天我们讲解了如何在Linux上部署Redis,那么今天我们来看一看Spring Boot如何集成Redis。”

    每天学Java
  • Mysql和Redis查询速度的对比

    “ 在软件系统中,IO速度比内存速度慢,IO读写在很多情况下会是系统的瓶颈,我们也知道Redis的查询速度比直接查数据库要快,因为Redis将数据存在内存中,而...

    每天学Java
  • Redis入门总结(大神慎入)

    “ 从Redis的安装到项目集成的两篇文章中,我们已经简单的了解到何如去用Redis的,再然后通过Redis和Mysql的查询性能对比和项目中如何合理运用Red...

    每天学Java
  • redis 学习(16)-- redis 持久化

    数据库做任何操作的更新就将它记录在日志中,当某时刻需要将数据恢复的时候,只需要将日志中的操作重新执行一遍,便得到某时某点的完整数据。

    希希里之海
  • linux常用命令之文件系统用法选项demo注意选项demo用法选项用法选项demo

    df df - report file system disk space usage 查看文件系统的使用清空 用法 df [-hi] [path] 选项 ...

    用户1174983
  • windows同时安装两个jdk

    JAVA_HOME   :  C:\Program Files\Java\jdk1.7.0_51

    week
  • 专属| VFEmail遭受毁灭性攻击

    近日,电子邮件服务商 VFEmail 报告它遭到毁灭性攻击,数据和备份全部被人在几小时内重新格式化。 VFEmail 创始人 Rick Romero 在 Twi...

    漏斗社区
  • 汇编语言从入门到精通-2CPU资源和存储器

      在汇编语言中,需要访问的硬件资源主要有:CPU内部资源、存储器和I/O端口。本章将着重讲解CPU内部寄存器的命名、功能及其常见的用途,还要介绍存储器的分段管...

    墨文
  • gobox中的simplecache和levelcache

    1、在使用时,如果set的值是引用类型,那么改变引用的对象的值时,cache中的内容也会改变,这一点要特别注意。

    李海彬
  • 【技巧】如何"盗用"他人的PowerBI文件数据

    有不少战友提出过类似的问题:手里有一个PowerBI文件,但没办法修改里面的内容,数据源又没有,怎么办?

    BI佐罗

扫码关注云+社区

领取腾讯云代金券