一.什么是redis ?

其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL database.

Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server sincekeys can contain stringshasheslistssets and sorted sets.

意思是:redis是一个key-value (键值对) 存储的NoSQL数据库,是开源的,可以用来存储的key的类型分为字符串,哈希,list,set和可排序的set.

二.如何用?

1.下载redis

需要安装一下redis,最新的版本为2.8.9,下载地址为:Redis 2.8.9 is the latest stable version

2.解压redis

下载完成后,ubuntu下执行命令进行解压:

tar -zxvf redis-2.8..tar.gz 

3.启动redis

cd redis-2.8.
#首先,编译redis
make
#其次,启动redis
cd src
./redis-server

4.连接redis

    cd src
./redis-cli
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer)
redis> incr mycounter
(integer)
redis>

连接好了以后就可以使用redis了.

三.redis常用命令

如果不想安装redis,可以直接在线学习redis:http://try.redis.io/

同时,也可以直接查看其命令:http://redis.io/commands

1.第一组命令(set get ):

  • set命令
  • get命令
  SET server:name "fido"
GET server:name => "fido"

这样就进行了赋值和取值,server:name就是key,value就是"fido".

2.第二组命令(自增.自减):

  • INCR命令
  • DEL命令
  • DECR命令
127.0.0.1:> set a
OK
127.0.0.1:> decr a
(integer)
127.0.0.1:> incr a
(integer)
127.0.0.1:> del a
(integer)
127.0.0.1:> get a
(nil)

INCR是自增命令,默认每执行一次INCR命令自增1,而DECR则是自减命令,每次自减1,del则是删除指定的key.

INCR是原子性命令,对于其数据修改,要么全都执行,要么全都不执行.

3.第三组命令(超时):

  • EXPIRE命令
  • TTL命令
    SET resource:lock "Redis Demo 1"
EXPIRE resource:lock
TTL resource:lock =>
SET resource:lock "Redis Demo 2"
TTL resource:lock => -

EXPIRE命令是设置超时命令的,即如上面的例子,resource:lock只能存在120秒,超时即被删除.

TTL命令是查看key剩余存活时间.

4.第四组命令(list):

  • RPUSH
  • LPUSH
  • LLEN
  • LRANGE
  • LPOP
  • RPOP
    RPUSH friends "Alice"
RPUSH friends "Bob"

RPUSH是每次都将value添加到list的最后面.

 LPUSH friends "Sam"

LPUSH 是每次都将value添加到list的最前面.

    LRANGE friends  - => ["Sam","Alice","Bob"]
LRANGE friends => ["Sam","Alice"]
LRANGE friends => ["Alice","Bob"]

LRANGE key 0 -1表示查看所有list的value,如果是大于-1的数值,例如0 1,则表示显示下表为0到1的值.

由lrange输出可以看出,lpush 'sam'是后添加的数据,却排到了最前面.

  LLEN friends => 

LLEN key 表示的输出list的长度.

 LPOP friends => "Sam"

LPOP表示删除第一条数据,并且回显删除的数据,与上面的LPUSH相反,这里要特别注意,别搞混了.

  RPOP friends => "Bob"

RPOP则与LPOP相反是删除list最后一条数据.

 5.第五组命令(set):

set命令与list命令非常相似,但不同的是,其是无序的,值只能出现一次的,值不能重复出现,key和value是一对多的关系.

  • SADD
  • SREM
  • SISMEMBER
  • SMEMBERS
  • SUNION
    SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"

SADD命令即是将值添加到set中.

SREM superpowers "reflexes"

SREM表示删除set中的指定的value.

    SISMEMBER superpowers "flight" => true
SISMEMBER superpowers "reflexes" => false

sismember判断值到底是不是SET中的,是就返回true,不是,就返回false.

SMEMBERS superpowers => ["flight","x-ray vision"]

SMEMBERS返回所有的value.

    SADD birdpowers "pecking"
SADD birdpowers "flight"
SUNION
superpowers birdpowers => ["flight","x-ray vision","pecking"]

SUNION合并两个SET集体,由于set是无序的,所以这里顺序是不确定的.

6.第六组命令(sorted set):

  • ZADD
  • ZRANGE
    ZADD hackers  "Alan Kay"
ZADD hackers "Grace Hopper"
ZADD hackers "Richard Stallman"
ZADD hackers "Yukihiro Matsumoto"
ZADD hackers "Claude Shannon"
ZADD hackers "Linus Torvalds"
ZADD hackers "Sophie Wilson"
ZADD hackers "Alan Turing"

ZADD将数据添加到有序set集合中,进行自动排序.

ZRANGE hackers   => ["Claude Shannon", "Alan Kay","Richard Stallman"]

ZRANGE表示输出指定范围的数据.

7.第七组命令(HASH)

  • HSET命令
  • HGETALL命令
  • HMSET命令
127.0.0.1:> hset user: name 'amosli'
(integer)
127.0.0.1:> hset user: email 'hi_amsli@outlook.com'
(integer)
127.0.0.1:> hset user: password ''
(integer)
127.0.0.1:> hgetall user:
) "name"
) "amosli"
) "email"
) "hi_amsli@outlook.com"
) "password"
) ""

HASH与JAVA中的Map集合非常类似,一个key对应一个value.

HSET命令就是set指定的key和value.

HGETALL命令即是指获取所有的key-value

127.0.0.1:> hmset user: name 'hiamos' password '' email 'hi_amosOKutlook.com' 

HMSET一次性设置多个key-value

8.第八组命令

  • HINCRBY
  • HDEL
    HSET user: visits 
HINCRBY
user: visits =>
HINCRBY user: visits =>
HDEL
user: visits
HINCRBY user: visits =>

HINCRBY可以理解为加法,将一个值加上另一个值.

HDEL则是删除.

9.第九组命令

  • flushall
  • brpop
  • keys
  • client list

flushall:将所有数据清空.

brpop:阻塞,只到有数据返回,有数据时删除list中的最后一条并返回.

keys:查询匹配规则的所有key

redis> MSET one  two  three  four
OK
redis> KEYS *o*
) "one"
) "four"
) "two"
redis> KEYS t??
) "two"
redis> KEYS *
) "one"
) "three"
) "four"
) "two"

client list:列出client的相关内容

127.0.0.1:> client list
addr=127.0.0.1: fd= name= age= idle= flags=N db= sub= psub= multi=- qbuf= qbuf-free= obl= oll= omem= events=r cmd=client

半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9的更多相关文章

  1. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  2. ubuntu 12.04 安装 redis

    原文地址:http://ijonas.com/software-development/nosql/412/ 1 Installing Redis 2.6.x on Ubuntu 12.04 and ...

  3. Ubuntu 12.04 安装Redis并设置主从复制

    今天想在Ubuntu上安装一个Redis服务器并配置Master-Slave,一开始懒得连VPN就查了一些国内的文章,不知道是没有亲自验证过的转载文章,还是版本问题造成的,发现按照步骤都没能成功完成配 ...

  4. ubuntu 12 install redis

    ubuntu 12 install redis 今天开始写数据server部分,大家初步的方案是用redis+mysql 所以要安装,下面记录安装的基本过程,留做后续参考 unbuntu 12 已经支 ...

  5. GAMIT 10.50在Ubuntu 12.04系统下的安装

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/162.html?1456480908 摘要:GAMIT/GLOBK是一套安装于Unix/L ...

  6. ubuntu 12.04内核升级到3.13.1

    1.背景:今天上午连接Android调试之后,突然又出现了无法识别usb的问题.具体表现为:除usb无线网卡有效外,其他usb设备包括usb鼠标.u盘.android手机插上后都没反应.dmesg一直 ...

  7. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  8. 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码       ...

  9. 基于Ubuntu 14.04 LTS编译Android4.4.2源码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...

随机推荐

  1. jquery 面板拖拽

    在网上找了好多的例子 都不满足我所需要 在网上找了一篇关于easyui是一个拓展的demo  然后根据demo 把我所需要的东西进行再次拓展 满足我的需求 也不多说了 上代码 首先 你肯定是要导eas ...

  2. border在IE6设置transparent无效

    在ie6下给border设置transparent是无效的,解决办法如下: _border-color:tomato; /*For IE6-*/ _filter:chroma(color=tomato ...

  3. oracle DBlink 【转】

    . 实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中. 二. 实现方法步骤: 1. 创建 ...

  4. Excel实用技巧

    情景:有时候,我们写了一个公式,然后想在其他行也套用这个公式,一般人都是把鼠标放在那个公式所在的单元格的右下角,然后往下拉,数据量少的时候还好,数据量大的时候就不太好操作了,此时,我们需要一个好方法. ...

  5. CSS3基础03(3D②) 求粉丝

    3 D (3.1)rotateY 围绕着Y轴进行旋转 (1)正数是(站在右边推),负数是(站在左边推) (2.1)定义元素背过去是否可见 backface-visibility: visible|hi ...

  6. Nginx内置变量以及日志格式变量参数详解

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...

  7. web初学之request,session与application

    request (1)request的setAttribute()与getAttribute()方法一般都是成对出现,首先通过setAttribute()方法设置属性与属性值,然后通过getAttri ...

  8. RHCA-红帽认证架构师

    OpenStack: 向部署应用 配置域.数据源子系统.中实施应用安全 迁移应用至 介绍集群 考试代码 任选其中五门: (红帽企业虚拟化) (红帽企业部署和系统管理) (红帽企业服务器硬化) (红帽企 ...

  9. 第三周作业--Word Counter

    需求分析: 1.写出一个程序,模仿wc.exe,通过输入文件名,实现文件内容读取: 2.统计出文件内容的总字符数.总单词数.行数.每行字符数.每行单词数. 代码分析: 一.打开文件. FILE *fp ...

  10. 基于VLC的视频播放器(转载)

    最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性很大. 找到了一个比较合适的播 ...