一、Redis介绍

1、介绍

  通常,在系统中,我们会把数据交由数据库来存储,但传统的数据库增删查改的性能较差,且比较复杂。根据 80/20 法则,百分之八十的业务访问集中在百分之二十的数据上。是否可以有一个存在于物理内存中的数据中间层,来缓存一些常用的数据,解决传统数据库数据读写性能问题。常用的数据都存储在内存中,读写性能非常可观。

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型的高性能的key-value数据库。它支持存储的value类型包括 string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

2、redis 优势

  > redis数据库完全在内存中,使用磁盘仅用于持久性。不仅可用作缓存,更可为一种key-value存储,他完全可替代后端的存储服务,但需要做好备份。

  > Redis可以将数据复制到任意数量的从服务器。

  > Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

  > 支持丰富的数据类型,Redis支持大多数开发人员已经知道的像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以通过它的数据类型处理更好。

  > 所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

  > Redis是一个多功能实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅);任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数,热点排行等。就看什么样的业务场景以及你怎么去设计使用好它的数据结构。

二、Redis安装

1、Linux下安装

1、安装

首先可以从redis官网找一个稳定版下载:https://redis.io/download

# cd /usr/local

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

# tar zxf redis-4.0.2.tar.gz

# cd redis-4.0.2

# #直接make则安装到src目录下,可以通过如下方式安装到指定目录
# make PREFIX=/usr/local/redis install

安装完后,在/usr/local/redis/bin下可以看到如下文件,同时在redis-4.0.2/src/也是存在的。

各个文件如下:

redis-benchmark  Redis性能测试工具

redis-check-aof  检查aof日志工具

redis-check-rdb  检查rdb日志工具

redis-cli  连接用的客户端

redis-sentinel  Redis集群的管理工具 监控多个master-slave集群,发现master宕机后能进行自动切换

redis-server  Redis服务程序

启动服务:

# cd /usr/local/redis/bin

# ./redis-server

# #上面是以默认的配置启动服务,可以根据指定的配置文件启动服务
# #首先将配置文件复制到安装目录下
# cp /usr/local/src/redis-4.0.2/redis.conf /usr/local/redis/
# #指定配置文件启动
# ./redis-server ../redis-conf

这样就算安装成功了:默认端口可以看到使用的是6379.

会发现启动的redis一致占据着终端,修改redis.conf,让redis以后台进程的形式运行。

# vim redis.conf

# #修改 daemonize 为 yes 即可,然后重新启动,就不会占据终端了。

测试:./redis-cli 启动客户端

2、注册成服务  

将redis注册成系统服务,不然每次都要到安装目录下手动启动服务.

如果服务开着,首先把服务关掉:./redis-cli shutdown

首先将redis目录下的初始化脚本拷贝到/etc/rc.d/init.d目录,同时重命名为redis

# cp /usr/local/src/redis-4.0.2/utils/redis_init_script /etc/rc.d/init.d/redis

修改redis脚本

  a) 第二行增加如下内容:# chkconfig: 2345 80 90

  

  b) 原脚本EXEC和CLIEXEC的值改到安装目录下.

  

  c) 在$EXEC $CONF 后边加一个&,表示让redis作为后台服务启动,否则该服务会独占输入屏。

  

  d) 可以看到在/etc/init.d/redis文件中有这么一行:CONF="/etc/redis/${REDISPORT}.conf",启动时的默认配置文件为/etc/redis/6379.conf。于是将redis配置文件拷贝到/etc/redis/下,并命名为 6379.conf 。

  

# mkdir /etc/redis

# cp /usr/local/src/redis-4.0.2/redis.conf /etc/redis/6379.conf

  e) 至此修改完毕,注册服务

# chkconfig --add redis

  f) 启动服务和停止服务命令

# service redis start

# service redis stop

2、Windows下安装

1、安装

首先下载windows版redis:https://github.com/MicrosoftArchive/redis/releases

这里我下载解压版:

下载完成后,解压即可:可以看到如下文件.

redis-server.exe   Redis启动程序

redis.windows.conf  配置文件

通过如下命令启动:这样就代表启动成功。同样会一直占用着终端。

启动客户端进行测试:

2、注册成系统服务

redis-server.exe --service-install redis.windows.conf

3、Redis数据库

redis安装完成之后,可以使用图形化管理工具RedisDesktopManager,可以很方便的查看redis的所有数据。

通过管理工具我们可以看到redis的数据库:

redis默认有16个数据库,可以通过配置文件修改。

redis下,数据库是由一个整数索引标识,默认启用0数据库,通过select命令可以切换数据库。且每个数据库都有属于自己的空间,不必担心之间的key冲突。

* flushdb,清空当前数据库,flushall,清空所有数据库。

三、Redis通用key操作命令

redis有很多数据类型,如string、list、set、zset等等,这里先学习redis对于key的操作命令,再学习数据类型的操作。

首先插入几条数据:

1、 keys:查询key

可以使用模糊查询key,有三个通配符 *、?、[]。* 通配任意字符,? 通配单个字符,[] 通配某一个字符。

2、randomkey:随机取一个key

例如抽奖时可用于随机抽取一个人。

3、exists key:判断key是否存在,返回1/0

4、type key:判断key存储的值的类型

返回的类型可能有string、list、set、zset、hash等,但不包括int、boolean、long这种基本类型,其以字符串形式保存。

5、rename key newkey:重命名key

如果newkey 已经存在,则newkey的原值被覆盖

6、renamenx key newkey:重命名key

nx > not exists,即newkey不存在时才修改,发生修改时返回1,未发生修改返回0。

7、del key1 key2 ... keyn:删除key

不存在的key忽略,返回真正删除的key的数量

8、move key dbid:将key移动到dbid数据库

9、expire key seconds:设置key的生命周期,单位秒

pexpire key milliseconds:设置生命周期,单位毫秒。

redis的key默认是永久有效的。

10、ttl key:查询key的生命周期,返回秒数

pttl key:返回毫秒数。

对于不存在的key、已经过期的key返回-2;永久有效的key,返回-1。

11、expireat key timestamp:设置key的过期时间,timestamp为unix的时间戳

pexpireat key milliseconds-timestamp:unix时间为毫秒。

需要将过期的时间转为Unix时间戳。

12、persist key:把指定的key设为永久有效

可以将设置过期时间的key转为永久有效。

最后:

不要使用太长的键,例如,不要使用一个 1024 字节的键,不仅是因为内存占用,而且在数据集中查找键时需要多次耗时的键比较。

不要使用太短的键。用”u1000flw” 取代”user:1000:followers” 作为键并没有什么实际意义,后者更具有可读性,相对于键对象本身以及值对象来说,增加的空间微乎其微。

坚持一种模式 (schema)。例如,”object-type:id” 就不错,就像”user:1000”。点或者横线常用来连接多单词字段,如”comment:1234:reply.to”,或者”comment:1234:reply-to”。

键的最大大小是 512MB。

参考:http://wiki.jikexueyuan.com/project/redis-guide/


基础学习完,下一章学具体数据类型的操作!!!

Redis 学习(一) —— 安装、通用key操作命令的更多相关文章

  1. Redis 通用key操作命令

    1.在redis里面允许模糊查询key,有3个通配符:*,?,[]. *:通配任意字符 ?:通配单个字符 []:通配中括号内的某个字符 例如: 2.randomKey 随机返回所有key中的某个 3. ...

  2. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  3. Redis学习笔记-安装篇(Centos7)

    1.安装 这里使用源代码安装的方式,如果你希望使用yum或者rpm包安装的方式,可以百度一下,安装方法可谓多如牛毛. # 下载安装包 # wget http://download.redis.io/r ...

  4. Redis学习之一 安装

    一.简介 定义 Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C ...

  5. 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D

    layout: post title: 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI- ...

  6. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  7. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  8. redis学习 (key)键,Python操作redis 键 (二)

    # -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...

  9. redis 学习(二)-- 通用命令

    redis 学习(二)-- 通用命令 1. keys pattern 含义:查找所有符合给定模式(pattern)的key 命令 含义 keys * 遍历所有 key keys he[h-l]* 遍历 ...

随机推荐

  1. 微信小程序 PHP后端form表单提交实例详解

    微信小程序php后端form表单 https://www.cnblogs.com/tdalcn/p/7092716.html 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了 ...

  2. 用php怎样将图片gif转化为jpg

    <?php $input= "link2.gif"; $output='test.jpg' ; $image=imagecreatefromgif($input); imag ...

  3. word:Can't find the word document templant:WordToRqm.doc

    问题:打开word文件时弹出提示 Cannot find the Word template:WordToRqm.dot 原因:安装了power designer. 解决:运行regedit.exe ...

  4. Lucene.net(4.8.0) 学习问题记录四: IndexWriter 索引的优化以及思考

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  5. 静态html制作之psd转html

    很多时候我们开发拿到的是psd文件,这个时候如果公司有前端,会帮你制作成静态html, 很多小公司是没有这个配置的,所以只能业务开发的自己上马.可以有多种实现方式: 1.对于简单的切图,可以在线网站切 ...

  6. linux 巨页使用测试

    这里记录测试巨页的mmap使用,测试代码和<linux 巨页使用测试以及勘误1>类似. 跟踪脚本如下: probe kernel.function("hugetlb_reserv ...

  7. 04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化

    Github:https://github.com/nnngu 项目源代码:https://github.com/nnngu/nguSeckill 关于并发 并发性上不去是因为当多个线程同时访问一行数 ...

  8. RocketMQ-quickstart(批量消费问题)

    基本概念: Producer:消息生产者,负责生产消息,一般由业务系统负责生产消息. Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费. Push Consumer:Consum ...

  9. Log4j扩展使用--日志记录器Logger

    OK,现在我们认真的研究下Logger的配置,进行相关配置扩展. Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局).其中,Logger负责记录 ...

  10. Android Studio打包APK时出现 is not translated in "en" (English) [MissingTranslation]

    错误信息: Error:(16) Error: "baidutieba_client_inavailable" is not translated in "en" ...