半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9
一.什么是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 strings, hashes, lists, sets 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的更多相关文章
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
- ubuntu 12.04 安装 redis
原文地址:http://ijonas.com/software-development/nosql/412/ 1 Installing Redis 2.6.x on Ubuntu 12.04 and ...
- Ubuntu 12.04 安装Redis并设置主从复制
今天想在Ubuntu上安装一个Redis服务器并配置Master-Slave,一开始懒得连VPN就查了一些国内的文章,不知道是没有亲自验证过的转载文章,还是版本问题造成的,发现按照步骤都没能成功完成配 ...
- ubuntu 12 install redis
ubuntu 12 install redis 今天开始写数据server部分,大家初步的方案是用redis+mysql 所以要安装,下面记录安装的基本过程,留做后续参考 unbuntu 12 已经支 ...
- GAMIT 10.50在Ubuntu 12.04系统下的安装
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/162.html?1456480908 摘要:GAMIT/GLOBK是一套安装于Unix/L ...
- ubuntu 12.04内核升级到3.13.1
1.背景:今天上午连接Android调试之后,突然又出现了无法识别usb的问题.具体表现为:除usb无线网卡有效外,其他usb设备包括usb鼠标.u盘.android手机插上后都没反应.dmesg一直 ...
- Ubuntu 12.04下搭建Qt开发环境
http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...
- 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码
原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 ...
- 基于Ubuntu 14.04 LTS编译Android4.4.2源码
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...
随机推荐
- Win10光驱不见了
1. 网上教程试了很多,如下: http://jingyan.baidu.com/article/02027811656a8b1bcd9ce570.html http://jingyan.todgo. ...
- ansible playbook 示例
http://blog.keshi.org/hogememo/2015/12/07/exploiting-ansible-jinja2 http://blog.keshi.org/hogememo/2 ...
- 排序算法(JAVA)
import java.util.Random; /** * 排序测试类 * * 排序算法的分类如下: * 1.插入排序(直接插入排序.折半插入排序.希尔排序): * 2.交换排 ...
- 怎么解决svn清理失败且路径显示乱码问题
http://jingyan.baidu.com/article/295430f1d728830c7e0050f9.html 上面这个网址是百度经验给的方法,我也是参照这个方式解决了问题,虽然是解决了 ...
- rabbitMQ学习(五)
topic匹配模式,topic能满足匹配结果就行. 发送端: public class EmitLogTopic { private static final String EXCHANGE_NAME ...
- WCF之Binding详解
本文的出发点: 通过阅读本文,您能了解以下知识: WCF中的Binding是什么? Binding的组 成? Binding Element 的分类? Binding描述 了那些层面的信息? 选择正确 ...
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...
- ConCurrent in Practice小记 (2)
Java-ConCurrent2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0 ...
- Redis从基础命令到实战之集合类型(Set)
Redis集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序.当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出对比列表类型的特点. 其实,集合类型的一 ...
- 第三周作业--VS 2013 单元测试
VSTS可以实现自动测试,简而言之就是编写一个测试程序的程序,通过输入自动判断输出是否与预想相符,并给出代码覆盖率等等一大堆统计数据,以下为如何利用这一功能的简介. 1.新建项目,创建一个类.即要完成 ...