Try Redis : Redis 入门教程

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.

时间: 2024-08-30 21:43:38

Try Redis : Redis 入门教程的相关文章

超强、超详细Redis数据库入门教程

[本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数据结构 – strings 9.redis数据结构 – lists 10.redis数据结构 – 集合 11.redis数据结构 – 有序集合 12.redis数据结构 – 哈希 13.聊聊redis持久化 – 两种方式 14.聊聊redis持久化 – RDB 15.聊聊redis持

超强、超详细Redis数据库入门教程_Redis

[本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数据结构 – strings 9.redis数据结构 – lists 10.redis数据结构 – 集合 11.redis数据结构 – 有序集合 12.redis数据结构 – 哈希 13.聊聊redis持久化 – 两种方式 14.聊聊redis持久化 – RDB 15.聊聊redis持

[个人翻译]Redis 集群教程(上)

[个人翻译]Redis 集群教程(中) [个人翻译]Redis 集群教程(下)  官方原文地址:https://redis.io/topics/cluster-tutorial  水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢.        这是一篇对Redis集群的入门介绍,这里不会使用复杂难懂的分步式系统概念.这里提供的指导有集群 的安装.测试,和操作,不函盖Redis集群规范中的细节,而只是站在用户的角度来描述系统的行为方式.      这个教程试图从最

CentOS6.5下Tomcat7 Nginx Redis配置步骤教程详解_Linux

所有配置均在一台机器上完成,部署拓扑信息如下: 注意:由于Redis配置对jar包和tomcat版本比较严格,请务必使用tomcat7和本文中提供的jar包. 下载地址: http://pan.baidu.com/s/1bO67Ky tomcat: tomcat1 localhost:8080 tomcat2 localhost:9080 nginx: localhost:1210 redis: localhost:6379 1. tomcat的安装和配置 1. 在server.xml文件中,修

Python与Redis的连接教程_python

今天在写zabbix storm job监控脚本的时候用到了python的redis模块,之前也有用过,但是没有过多的了解,今天看了下相关的api和源码,看到有ConnectionPool的实现,这里简单说下. 在ConnectionPool之前,如果需要连接redis,我都是用StrictRedis这个类,在源码中可以看到这个类的具体解释:   redis.StrictRedis Implementation of the Redis protocol.This abstract class

[个人翻译]Redis 集群教程(中)

[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(下) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢.       使用create-cluster角本创建Redis集群      如果你不想通过配置来创建Redis集群并且不想向上边阐明的一样手动的去执行单独的实例,这里还有更简单的系统(但是你将不会学到等量的操作细节)      只需查看在

[个人翻译]Redis 集群教程(下)

[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(中) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢.      一个更有趣的示例程序      我们上边写的那个示例程序不够好玩.他以简单的方式写入到集群而没有检查写入的正确性.      从我们的观点看,集群接收写入命令可能每次操作总是把键foo写入 为42,并且我们一点也没有注意到.  

centos中安装配置redis和php-redis教程

centos安装redis的shell脚本 #!/bin/sh #http://zggsdy.blog.163.com/blog/static/28782049201331825523781/ cd /web/soft/php if [ -d "redis-2.8.13" ];then rm -rf redis-2.8.13 fi tar xzvf redis-2.8.13.tar.gz cd redis-2.8.13 make make install sed -n '/daemon

通过Ruby on Rails和docker构建微服务架构之入门教程

说到时下的架构,免不了会涉及到微服务.而谈到微服务架构,又跟容器和Docker技术脱不了关系.虽然容器和Docker并不完全是一回事,但两者是密不可分的,而且二者之间也有共同之处:在大型复杂应用的构建和运营方面,二者都可以大大提高企业的效率.   微服务可不像一般的应用,可以通过apt-get工具进行安装,大家可能会问了:我们该如何才能像安装应用一样实现这种服务呢?在很大的程度上,这个问题的答案是否定的,我们无法轻松实现这种服务.更准确的说,至少目前我们还无法实现.在一个系统中,最难修改的就是架