初探Redis

大概在2010年的时候,有一次和一个同事聊天,那个时候知道了Redis,对于技术的追随至今,还没有下载一个Redis版本玩玩,

只有1万多行代码,以性能惊人著称。新浪微博架构师杨卫华(我一翻微信,原来就是Tim Yang)曾说过:“国内前十大网站的子产品估计用1台Redis就可以满足存储及Cache的需求”

从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis之父到哪里,哪里就有了新的标签。

下面就是Redis之父,意大利程序员Salvatore Sanfilippo

我所在的DBAplus社群也策划了周期性的技术发展newsletter,里面有一些信息是我负责收集的,我也和行业里的各路大拿有过简单的沟通,在Redis方面也能够得到第一手的信息。

Redis的官方是https://redis.io/,国内也有Redis用户组和相关的中文站点,也要感谢这些为社区贡默默贡献的一些人,有了这个圈子,技术人才不会更加孤单。 Reids目前的最新版本是4.0.1,我从官方下载了之后,发现压缩包竟然只有1.6M,解压后大概就是8.4M左右,这个量级就是很多关系型数据库补丁的大小吧。所以勾起了我的兴趣。深入的谈不上,我局从下载安装部署开始吧。

从README文档可以看到,官方提供了以下几个很实用的链接。

Redis数据类型介绍:

http://redis.io/topics/data-types-intro

Redis命令行:

http://redis.io/commands

Redis官方文档:

http://redis.io/documentation

# rpm -qa|grep gcc libgcc-4.4.7-4.el6.x86_64 gcc-4.4.7-4.el6.x86_64

安装部署非常简单,就是一个make命令,当然如果要企业级定制还是有一些需要注意的参数。

编译之后得到的Redis目录大概是73M

[root@oel1 redis-4.0.1]# du -sh . 73M

这个目录下有个文件很重要,那就是redis的配置文件redis.conf

启动的时候,如果不声明,默认就是在这个路径下使用这个默认的redis.conf文件。

启动Redis

./redis-server &

默认端口是6379

关闭Redis

# ./src/redis-cli shutdown

进入命令行模式:

[root@oel1 src]# ./redis-cli 127.0.0.1:6379> help redis-cli 4.0.1

...

因为Reids是存储键值,我们简单测试一下,让我有些惊喜的是,竟然还有命令提示功能,会自动提示你命令的情况。

127.0.0.1:6379> set name jeanron OK

得到刚初始化后的name

127.0.0.1:6379> get name "jeanron"

Redis支持的数据类型比较丰富,支持多种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),HyperLogLogs(一种基于概率的数据结构,用于统计集合中不同元素的个数)

比如List,使用rpush,rrange,lrange,lpush来操作

可以单个推入元素

127.0.0.1:6379> rpush mylist a (integer) 1 127.0.0.1:6379> rpush mylist b (integer) 2

列举list里的元素

127.0.0.1:6379> lrange mylist 0 -1 1) "a" 2) "b"

再补充一部分元素到list里面

127.0.0.1:6379> rpush mylist 1 2 3 (integer) 5 127.0.0.1:6379> lrange mylist 0 -1 1) "a" 2) "b" 3) "1" 4) "2" 5) "3"

还可以有队列数据结构的pop操作,比如pop末尾的元素

127.0.0.1:6379> rpop mylist "3" 127.0.0.1:6379> lrange mylist 0 -1 1) "a" 2) "b" 3) "1" 4) "2"

查看list的长度。

127.0.0.1:6379> llen mylist (integer) 4

如果对应的是一些基本的数据类型,还有一些补充的操作可用,比如像序列一样自增。

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> incrby counter 100 (integer) 202

我们也可以管理这些键值对,比如判断是否存在,如果存在留删除。

127.0.0.1:6379> exists counter (integer) 1 127.0.0.1:6379> del counter (integer) 1 127.0.0.1:6379> exists counter (integer) 0

如果想查看整个Redis的状态信息,可以使用命令info,输出会分为几个维度来展现这些信息。

127.0.0.1:6379> info # Server redis_version:4.0.1 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:f9229e185138419b redis_mode:standalone os:Linux 3.8.13-16.2.1.el6uek.x86_64 x86_64

当然上面的操作只是Redis中九牛一毛的操作,还是很多的内容自己要细化学习。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2017-09-03

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

漏洞分析之Typecho二连爆

这段时间 Typecho 在十几天之内连续爆了两个最高可 getshell 的洞,先是 SSRF 可打内网,再是反序列化直接前台 getshell ……安全性这...

1620
来自专栏小樱的经验随笔

CTF---Web入门第十六题 天下武功唯快不破

天下武功唯快不破分值:10 来源: 北邮天枢战队 难度:易 参与人数:10787人 Get Flag:2264人 答题人数:3373人 解题通过率:67% ...

2986
来自专栏Python web开发

Python那些事——你不知道的python的“独门暗器”!

随着近几年人工智能的流行,从而引发了一个编程语言的兴起,我想说到这,大家应该都明白了这是什么吧,没错它就是大名鼎鼎的——Python

2168
来自专栏大前端开发

从编程小白到全栈开发:理解异步

作为以JavaScript为主要开发语言的JS全栈开发者,是一定会碰上“异步(Asynchronous)”这个重要概念的,尽早的理解这个概念,会对你的JS编程生...

813
来自专栏web前端教室

前端开发就是这样,“看似简单的东西,反而会很复杂。”

今天的零基础前端课讲到了一个tab地址切换的菜单,就下面这个东西, ? 第一眼看起来超级简单,无非是点击上面的title显示下面的菜单,然后点省市区把内容选上去...

2116
来自专栏SEO

「SEO技巧」页面分页优化技巧

3407
来自专栏数据派THU

教你用一行Python代码实现并行(附代码)

来源:编程派 翻译:caspar 译文:https://segmentfault.com/a/1190000000414339 原文:https://mediu...

29110
来自专栏Spark学习技巧

Flink流式处理概念简介

一,抽象层次 Flink提供不同级别的抽象来开发流/批处理应用程序。 ? 1,stateful streaming 最底层。它通过Process Functio...

4806
来自专栏灯塔大数据

技术 | Python从零开始系列连载(十四)

导读为了解答大家初学Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~

982
来自专栏aCloudDeveloper

python学习笔记一

之前看过一本100多页的《python简明教程》,都是些非常简单的语法,现在到真正用的时候根本无从下手,所以,重新捧起一本《python学习手册》,1000多页...

2157

扫码关注云+社区