Redis初探

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:    大概在2010年的时候,有一次和一个同事聊天,那个时候知道了Redis,对于技术的追随至今,还没有下载一个Redis版本玩玩,   只有1万多行代码,以性能惊人著称。

   大概在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中九牛一毛的操作,还是很多的内容自己要细化学习。



最后需要说明的是,今天是抗日战争胜利纪念日,为先烈和英雄致敬。




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
NoSQL 数据库 Redis
【Redis】Redis 初探
一 简介   Redis 是一款完全开源免费的高性能的key-value数据库,可以作为缓存,kv结构存储和队列,目前在互联网行业比较广泛使用。   Redis作为Key-value型数据库,它提供了Key-Value 映射关系。
1032 0
|
NoSQL API PHP
redis 初探
2014年6月24日 17:50:57 解压redis后进入源码目录,只用执行make命令就可以完成安装了 安装完成后到src目录里,将 redis-server redis-cli redis.conf redis-benchmark redis-check-aof redis-check-dump 这几个文件复制到同一个目录下边(也不必要在同一个目录下边) 启动redis服务端: .
882 0
|
3月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
118 1
|
17天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
159 85
|
3月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
54 2
数据的存储--Redis缓存存储(二)
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
85 6
|
14天前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。
|
2月前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
2月前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
2月前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
345 22