Redis系列之(一):10分钟玩转Redis(转)

1. Redis介绍

Redis是一个开源的使用ANSI C语言编写、基于内存的Key-Value数据库。

它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。

相比memcached,Rdeis有以下优点:

1. redis原生支持的数据类型更多。
2. redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上。
3. redis支持master-slave模式的数据备份。

4. 性能。Redis作者的说法是平均到单个核上的性能,在单条数据不大的情况下Redis更好。

为什么这么说呢,理由就是Redis是单线程运行的。因为是单线程运行,所以和Memcached的多线程相比,整体性能肯定会偏低。因为是单线程运行,所以IO是串行化的,网络IO和内存IO,因此当单条数据太大时,由于需要等待一个命令的所有IO完成才能进行后续的命令,所以性能会受影响。

2. 安装Redis

2.1 Redis的安装十分简单,用yum或apt-get可以直接安装


1

2

# yum install epel-release (centos 7可以直接安装epel源)

# yum install redis

2.2 启动/停止Redis


1

2

3

4

# redis-server /etc/redis.conf

 

# systemctl start redis

# systemctl stop redis

3. 使用Redis

3.1 Redis-cli命令行操作KV

连接到Redis


1

2

# redis-cli -p port

# redis-cli

ping


1

127.0.0.1:6379> ping<br>PONG

设置键值


1

2

127.0.0.1:6379> set testkey "hello"

OK

查询键


1

2

127.0.0.1:6379> get testkey

"hello"

删除键


1

2

127.0.0.1:6379> del testkey

(integer) 1

设定有效期限


1

2

127.0.0.1:6379> setex test 10 111

OK

用EXPIRE key s 设定过期时间  毫秒用PEXPIRE


1

2

127.0.0.1:6379> EXPIRE test11 300

(integer) 1

用TTL key 查看过期时间  毫秒用PTTL


1

2

127.0.0.1:6379> TTL test11

(integer) 288

用PERSIST key 取消过期时间


1

2

127.0.0.1:6379> PERSIST test11

(integer) 1

3.2 高级功能

3.2.1 自增,自减等,INCR、DECR、INCRBY、SORT


1

2

3

4

5

6

7

8

127.0.0.1:6379> set counter 100

OK

127.0.0.1:6379> incr counter

(integer) 101

127.0.0.1:6379> incr counter

(integer) 102

127.0.0.1:6379> decr counter

(integer) 101

3.2.2 事务


1

2

3

4

5

6

7

8

9

10

11

12

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379> set test11 111111

QUEUED

127.0.0.1:6379> set test12 121212

QUEUED

127.0.0.1:6379> incr counter

QUEUED

127.0.0.1:6379> EXEC

1) OK

2) OK

3) (integer) 102

3.2.3 HyperLogLogs

Redis 在 2.8.9 版本添加了 HyperLogLog 算法。

3.2.4 发布/订阅 功能

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。

在一个客户端订阅频道 redisChat


1

2

3

4

5

127.0.0.1:6379> SUBSCRIBE redisChat

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "redisChat"

3) (integer) 1

在另一个客户端,发送消息到频道 redisChat,订阅者就能接收到消息

发布端:


1

2

127.0.0.1:6379> PUBLISH redisChat "redis haha"

(integer) 1

订阅端:


1

2

3

4

5

6

7

8

127.0.0.1:6379> SUBSCRIBE redisChat

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "redisChat"

3) (integer) 1

1) "message"

2) "redisChat"

3) "redis haha"

3.3查看Redis状态


1

127.0.0.1:6379> info

info输出的信息很多,可以指定输出的部分


1

127.0.0.1:6379> info stats


1

127.0.0.1:6379> info memory

used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位。

used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps等命令的输出一致。

rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。

内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。

used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

used_memory_peak : 峰值,设定的最大内存要大于峰值

3.4 其他命令

查看记录数


1

127.0.0.1:6379> dbsize

查看所有KEY


1

127.0.0.1:6379> KEYS *

列出所有客户端连接


1

127.0.0.1:6379> CLIENT LIST

关闭ip:port的客户端


1

127.0.0.1:6379> CLIENT KILL 127.0.0.1:11902

清空所有数据库的所有key


1

127.0.0.1:6379> FLUSHALL

清空当前数据库中所有key


1

127.0.0.1:6379> FLUSHDB

返回最后一次成功保存数据到磁盘的时间,以UNIX时间戳格式表示


1

127.0.0.1:6379> LASTSAVE

返回当前服务器时间,以UNIX时间戳格式表示


1

127.0.0.1:6379> TIME

连接到其他数据库(默认数据库是0)


1

2

127.0.0.1:6379> SELECT 1

OK

将当前数据库的 key 移动到指定的数据库


1

2

127.0.0.1:6379> MOVE test2 1

(integer) 1

4. 设定文件

4.1 /etc/redis.conf


1

2

3

4

5

6

7

8

9

10

11

12

13

daemonize no      是否以后台daemon方式运行

timeout 0         请求超时时间

maxclients 10000  最大连接数

 

maxmemory <bytes>              最大内存

maxmemory-policy volatile-lru  达到最大内存时的LRU驱逐策略

maxmemory-samples 3            随机抽取n个key执行LRU

hash-max-ziplist-entries 512   Map内部不超过多少个成员时会采用线性紧凑格式存储

hash-max-ziplist-value 64      Map内成员值长度不超过多少字节会采用线性紧凑格式存储

类似的还有,list-max-ziplist-entries 512,list-max-ziplist-value 64等等

 

slowlog-log-slower-than 10000  slow log计入时间,microseconds(1000000)

slowlog-max-len 128            slow log计入条数

4.2 查看最大连接数


1

2

3

127.0.0.1:6379> config get maxclients

1) "maxclients"

2) "10000"

运行过程中调整参数


1

127.0.0.1:6379> config set maxclients 10001

4.3 查看slow log


1

2

3

4

5

6

127.0.0.1:6379> SLOWLOG get

127.0.0.1:6379> SLOWLOG get 10

1) 1) (integer) 0

   2) (integer) 1448413479

   3) (integer) 124211

   4) 1) "FLUSHALL"

确认slow log条数设定


1

127.0.0.1:6379> SLOWLOG len

清空slow log


1

127.0.0.1:6379> SLOWLOG reset

5. 数据持久化

5.1 快照(snapshot

5.1.1 在设定文件中设置快照


1

2

3

4

save <seconds> <changes>      开启快照,并设定保存快照到硬盘的频率

rdbcompression yes/no         保存快照的时候,是否压缩

dbfilename dump.rdb           指定快照的文件名(Append Only File也保存在此)

dir /var/lib/redis/           指定快照存放的场所

5.1.2 手动创建快照

在命令行执行save或bgsave命令


1

2

127.0.0.1:6379> SAVE

OK

5.2 日志备份(Append Only File

类似于mysql的binlog,将操作都记录在log里。快照达不到要求保存的精度时,和快照结合使用,不建议单独使用。默认间隔是1秒,可以修改。

5.2.1 在设定文件中设置AOF


1

2

3

4

appendonly yes                     开启Append Only File

appendfilename "appendonly.aof"    指定日志文件名

appendfsync always/everysec/no     指定写日志的频率

no-appendfsync-on-rewrite no       当有bgsave等其他进程执行fsync()时,AOF和appendfsync none动作一样

5.3 还原

要恢复Redis的数据只需移动 Redis 的备份文件(dump.rdb,appendonly.aof)到 Redis 目录,然后启动服务器。

为了得到你的 Redis 目录,使用命令如下所示:


1

2

3

127.0.0.1:6379> config get dir

1) "dir"

2) "/var/lib/redis"

6. 后记

本文简单介绍了Redis的安装及使用,接下来介绍主从同步,负荷分散。

专注服务器运维十年,欢迎技术上的交流。微信:ee900222 QQ:176539854

 

http://www.cnblogs.com/ee900222/p/redis_1.html

时间: 2024-09-20 12:34:49

Redis系列之(一):10分钟玩转Redis(转)的相关文章

Docker系列之(一):10分钟玩转Docker(转)

1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是一个开源的应用容器引擎,可以把应用以及依赖包放到一个可移植的容器中,然后发布到任何流行的 Linux 系统上,通过这种方式实现虚拟化. 提到虚拟化,大家应该十分熟悉了,有VMware,Xen,KVM等等很多.那么,Docker和VM有什么不同呢,我们用官网的一张图来说明一下.   可以看出,Dock

【云计算的1024种玩法】10分钟轻松设置出 A+ 评分的 HTTP/2 网站

前言 其实 HTTP/2 应该是 2015 年的老话题了(2015 年 5 月 14 日 HTTP/2 协议正式版的发布),但是 2018 年都到了很多网站依旧没有使用,作为新一代互联网协议,HTTP/2 不仅速度比目前常见的 HTTP/1.1 更快,而且更加安全. 不过,也正是因为安全(依赖 HTTPS)所以 HTTP/2 的设置略为复杂导致很多网站都没有用上. 这里就将为大家介绍如何 10分钟 轻松设置出 HTTP/2 网站. 介绍 HTTP 2.0 即超文本传输协议 2.0,是下一代 HT

瞬移僵尸 vs 发电向日葵!《植物大战僵尸:花园战争》10分钟火爆演示

class="post_content" itemprop="articleBody"> 由 Electronic Arts 美商艺电预定于2014年春季在 PC/Xbox One/Xbox 360 等主机上发售推出,PopCap Games 负责开发制作,定价29.99美金的动作射击新作<植物大战僵尸:花园战争(Plants vs. Zombies:Garden Warfare)>,如今官方特地公布一段长度将近十分钟左右,针对游戏玩法为玩家们进行

英国男孩10分钟iPad游戏花掉1700英镑

据<北京晚报>报道据英国http://www.aliyun.com/zixun/aggregation/31646.html">媒体报道,英国5岁男孩丹尼日前在玩iPad游戏时用父亲的密码登录,没想到程序虽然可免费下载,但游戏中却有付费操作,仅仅10分钟,他就花掉了1700英镑(约1.6万9001.html">人民币). 报道称,当丹尼问父母iPad密码的时候,基钦夫妇并没有放在心上.可是他们不清楚的是在这个僵尸游戏中,需要向僵尸投掷"飞镖"

如何10分钟搞定撞库

近期,阿里云云盾安全团队检测到越来越多的撞库攻击事件,在大数据应用越来越广泛的今天,撞库攻击带来的危害也越来越不容忽视.那么何为撞库攻击?撞库对用户可能有哪些危害?还有最关键的,作为大多数专注业务发展的公司来说,如何防止撞库威胁到自家信息安全呢?安全君将一一为您解读. 一.懒,可能成为撞库"成功"的罪魁祸首 撞库攻击没有那么高深,举个例子来说,假设我有一个XX邮箱的账号,用户名是abc@xx.com,密码是x6!00AL5y@(很复杂,很安全).同时因为懒癌晚期的缘故,我还用这个账号注

在阿里云上两分钟玩转AlextNet

本系列将利用Docker技术在阿里云弹性GPU和容器服务上,帮助您上手TensorFlow的机器学习方案 第一篇:打造TensorFlow的实验环境 第二篇:轻松搭建TensorFlow Serving集群 第三篇:打通TensorFlow持续训练链路 第四篇:利用Neural Style的TensorFlow实现,像梵高一样作画 第五篇:轻松搭建分布式TensorFlow训练集群(上) 第六篇:在阿里云上两分钟玩转AlextNet 简介 AlexNet 是 2012 年由 Alex Krizh

Intercom的持续部署实践:一天部署100次,1次10分钟

本文讲的是Intercom的持续部署实践:一天部署100次,1次10分钟,[编者的话]这篇博文分享了 Intercom 公司在持续部署的经验和体会.Intercom 公司从创业起步时就开始认定持续部署的重要性,从2002年每天10次部署,到今年每天接近100次的部署,积累了丰富的经验,对持续部署有着较为深刻的认识,虽然本文没有详尽的技术细节,所谓的干货,不过个中经验分析,比如 "帮助新来的工程师"这个想法蛮有新意,另外正如文中所说 -- "部署时间的增加,会使你的产品变得越来

10分钟检查网站页面缺失或错误

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我从来没有建议你尝试在短短10分钟内解决你自己的搜索引擎优化的问题,但它是惊人的你可以做什么,当你被迫要真正使你的时间计数. 我想分享一个共同的搜索引擎优化解决问题,我的10分钟(给予或采取)的过程 – 寻找"失踪"的页面. 你其实可以应用到一系列的问题,其中包括: 找出原因是没有得到一个网页索引 为什么发现网页没有排名

课间休息10分钟落后时代

"下课铃响了,同学们快步走出教室,到操场上参加自己喜爱的课间活动.校园内顿时沸腾起来." "课间活动真是丰富多彩.看,操场中间,有的跳皮筋儿,有的跳绳,有的踢毽子.最有趣的是一年级的小同学,他们由老师带着,在做老鹰捉小鸡的游戏呢." 冯世良委员的提案带着对中小学生热爱的温度,在此次两会,他为全国中小学生的课间休息时间再次建言-- 现在许多中小学校的教学楼越盖越高,尤其是重点学校最为严重.根据国家规定,小学最高四层,中学最高五层,而有不少学校已经是五层以上.由于学生学