Try Redis : Redis 入门教程

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

Try Redis : Redis 入门教程


开篇

Redis 是一种以键值对key-value存储数据的NoSQL数据库。

键值对存储数据的本质是以某个键存储某个值。之后你可以用这个键把存储的值取出来。可以用SET命令以键‘servername’存储值‘fido’:

 
 
  1. SET servername 'fido'

这样,数据就被存储了,之后可以使用GET取出刚刚存储的数据:

 
 
  1. GET servername // 返回 "fido"

对于数据的操作,还有一些基本的命令,比如INCRDEL

INCR 用于原子地递增一个数值数据。而DEL则是删除一个值。

 
 
  1. SET connections 10
  2. INCR connections // 返回 11
  3. INCR connections // 返回 12
  4. DEL connections
  5. INCR connections // 返回 1

给值指定寿命

可以通过EXPIRE设置一个值的存活时间,过了这个时间,该值就会被删除。通过TTL可以查看值的存活时间。

对于TTL

  • 如果一个值没有设置存活时间,那么TTL会返回-1,表示这个值不会过期(这是值的默认寿命:长生);

  • 如果一个值设置了存活时间,在存活时间内,对值使用TTL会返回相应的生命剩余时间;

  • 如果对一个不存在的值或是已经超过存活时间(会被删除)的值使用TTL,会返回-2

注意,每使用SET设置一个值时,该值的TTL都会被重置为默认。

例子:

 
 
  1. SET resource:lock 'Redis Demo 1'
  2. TTL resource:lock // 返回 -1
  3. EXPIRE resource:lock 120 //设置存活时间为120秒
  4. // 7秒后
  5. TTL resource:lock // 返回 113
  6. // 120秒以后
  7. TTL resource:lock // 返回 -2
  8. SET resource:lock 'Redis Demo 2'
  9. TTL resource:lock // 返回 -1

列表list

Redis也支持一些复杂的/复合的complex数据结构。这里第一个要说的是列表。列表是一系列有序的值的集合。
与列表交互的几个重要方法有:RPUSHLPUSHLLENLRANGELPOPRPOP

  • RPUSHLPUSH用于在列表的右端和左端插入数据。

  • LLEN返回列表的长度。

  • LRANGE返回一个子列表,它接收两个参数,它们标识你所要的子序列的首尾元素在原序列的位置。
    如果第二个元素是-1,则表示到序列的末尾。

  • LPOPRPOP删除并返回左右两端的第一个元素(跟栈的pop一样)。

例子(不用显式的创建列表,在向一个不存在的列表中插入值时,列表会被自动创建,当列表中的最后一个元素被pop后,列表会被自动删除):

 
 
  1. RPUSH friends "Alice" // 创建一个列表friends并对其添加一个元素"Alice"
  2. RPUSH friends "Bob" // 向friends添加元素"Bob"
  3. LPUSH friends "Sam" // 向friends添加元素"Sam"
  4. LRANGE friends 0 -1 // 返回 1) "Sam", 2) "Alice", 3) "Bob"
  5. LRANGE friends 0 1 // 返回 1) "Sam", 2) "Alice"
  6. LRANGE friends 1 2 // 返回 1) "Alice", 2) "Bob"
  7. LLEN friends // 返回 3
  8. LPOP friends // 返回 "Sam"
  9. RPOP friends // 返回 "Bob"
  10. LLEN friends // 返回 1
  11. LRANGE friends 0 -1 // 返回 1) "Alice"

集合(set)

集合跟列表类似,但是集合是无序的,且集合内元素唯一。

集合的几个常用命令为:SADDSREMSISMEMBERSMEMBERSSUNION

  • SADD 向集合中添加值。

  • SREM 从集合中删除给定的值。

  • SISMEMBER 接收一个参数,用以判断该参数的值是否在集合中,若在集合中返回1,否则返回0。
    如果不给参数,则返回整个列表。

  • SMEMBERS 返回集合中所有元素。

  • SUNION 合并两个集合。

例子(跟列表一样,集合也不用显式创建):

 
 
  1. SADD superpowers "flight"
  2. SADD superpowers "x-ray vision"
  3. SADD superpowers "reflexes"
  4. SREM superpowers "reflexes"
  5. SISMEMBER superpowers "flight" // 返回 1
  6. SISMEMBER superpowers "reflexes" // 返回 0
  7. SMEMBERS superpowers // 返回 1) "flight", 2) "x-ray vision"
  8. SADD birdpowers "pecking"
  9. SADD birdpowers "flight"
  10. SUNION superpowers birdpowers // 返回 1) "pecking", 2) "x-ray vision", 3) "flight"

有序集合Sorted Sets

集合是个很好用的数据结构,但是因为它是无序的,在某些情况下使用会不太方便。所以Redis 1.2 引入了有序集合。

有序集合的命令是Z开头,比如:有序集合的数据插入用的是ZADD而不是SADD
有序集合跟常规集合类似,不过有序集合的每个值都有一个与其关联的分数associated score,这个分数用于排序集合内元素。

来一个例子:

 
 
  1. ZADD hackers 1940 "Alan Kay"
  2. ZADD hackers 1906 "Grace Hopper"
  3. ZADD hackers 1953 "Richard Stallman"
  4. ZADD hackers 1965 "Yukihiro Matsumoto"
  5. ZADD hackers 1916 "Claude Shannon"
  6. ZADD hackers 1969 "Linus Torvalds"
  7. ZADD hackers 1957 "Sophie Wilson"
  8. ZADD hackers 1912 "Alan Turing"

在例子中,第一个参数(出生年)是排序的分数,下面获取索引值2到4的元素(从0开始):

 
 
  1. ZRANGE hackers 2 4 // 返回 1) "Claude Shannon", 2) "Alan Kay", 3) "Richard Stallman"

Hashes

Hashes 是字符串字段和字符串值之间的映射。所以它是表示对象的最佳数据类型:

 
 
  1. HSET user:1000 name "John Smith"
  2. HSET user:1000 email "john.smith@example.com"
  3. HSET user:1000 password "s3cret"

使用HGETALL获得存储的数据(返回所有的字段名和字段值):

 
 
  1. HGETALL user:1000

也可以把对象的属性一次设置完:

 
 
  1. HMSET user:1001 name "Mary Jones" password "hidden" email "mjones@example.com"

获取某个特定字段:

 
 
  1. HGET user:1001 name // 返回 "Mary Jones"

数值类型在hash字段中也是很好用的,比如原子地步进一个数啥的都是可以的:

 
 
  1. HSET user:1000 visits 10
  2. HINCRBY user:1000 visits 1 // 返回 11
  3. HINCRBY user:1000 visits 10 // 返回 21
  4. HDEL user:1000 visits
  5. HINCRBY user:1000 visits 1 // 返回 1

结束

到此为止,try redis教程结束。更多内容,请看下面链接:


本文来自云栖社区合作伙伴“Linux中国”
原文发布时间为:2013-04-02.
相关实践学习
基于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
相关文章
|
4月前
|
存储 消息中间件 NoSQL
百度搜索:蓝易云【超详细Redis入门教程—Redis分布式系统详解】
这些是Redis入门教程的主要内容,涵盖了Redis的基本使用和分布式系统的详解。通过学习和实践,你可以进一步深入了解Redis的各种功能和用法,为实际应用场景做
157 0
|
XML NoSQL 数据可视化
Spring boot整合Redis(入门教程)
jedis:采用直连,多个线程操作的话,是不安全的。如果想要避免不安全的,使用jedis pool连接池!更像BIO模式 lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,更像NIO模式
256 0
Spring boot整合Redis(入门教程)
|
存储 监控 负载均衡
Redis主从复制详解(入门教程)
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower) ; <font color='blue'>数据的复制是单向的,只能由主节点到从节点。</font>Master以写为主,Slave以读为主。
306 0
Redis主从复制详解(入门教程)
|
存储 JSON NoSQL
Redis 入门教程
Redis 入门教程
156 1
Redis 入门教程
|
存储 NoSQL JavaScript
|
存储 缓存 NoSQL
很详细Redis入门教程
这篇文章主要介绍了很详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 【redis是什么】 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地) 目前,Vmware在资助着redis项目的开发和维护。 【redis的作者何许人也】 开门见山,先看照片: 是不是出乎了你的意料,嗯,高手总会有些地方与众不同的。 这
210 0
|
NoSQL C# 数据库
Redis入门教程(C#)
Redis是什么? Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 补充概念: 持久化:是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存) Redis的安装、启动: 下载地址:https://github.com/MSOpenTech/redis/releases,可根据需要选择下载32位或者64位 这里我选择的是64位安装包: 然后解压安装包到指定目录。
1732 0
|
18天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel