Redis 入门

1、命令行工具

在windows上巧命令行指令,实在是令人痛苦,本人实在是受不了windows下cmd的笨,powershell的蠢,只能换一个了。

介绍一款cmd工具cmder(github上开源),地址:http://bliker.github.io/cmder/,如下图,若有更好的工具,请大家告诉一下我,在此,先谢谢。

注:"λ"为cmder工具的标识,后边指令凡是遇到这个字符,都可以跳过

2、官方下载redis

地址:http://redis.io/download,

官方提供linux版本,可以直接在此处下载

若是需要windows版本,官方推荐https://github.com/MSOpenTech/redis/releases。我下载的是此版本后,解压下载包到本地目录,如D:\Programs\redis-2.8.19

3、启动数据库服务。 

命令:

1
redis-server.exe redis.windows.conf

  

4、测试数据库,

 下边我们分别创建string,list,hash,至于更高级的,大家自己再深入学习吧

注意:

redis指令以回车作为结束标识,所以后边不能加标点符号,否则会报错,或者执行错误的指令(即把分号当成指令的一部分)

canssdra指令将分号作为指令结束标识,所以后边必须加分号“;”,否则认为该指令没有结束。

1
2
3
4
5
6
7
λ redis-cli.exe -h  127.0 . 0.1  -p  6379
127.0 . 0.1 : 6379 > keys *;
(empty list or set)
127.0 . 0.1 : 6379 > set name  'zxh' ;
Invalid argument(s)
127.0 . 0.1 : 6379 > set name  'zxh'
OK

4.1 string

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Users\zxh
λ cd D:\Programs\redis- 2.8 . 19
 
C:\Users\zxh
λ d:
 
D:\Programs\redis- 2.8 . 19
λ redis-cli.exe -h  127.0 . 0.1  -p  6379
127.0 . 0.1 : 6379 > KEYS *o*
(empty list or set)
 
127.0 . 0.1 : 6379 > set username  'zxh'
 
OK
127.0 . 0.1 : 6379 > get username
"zxh"
127.0 . 0.1 : 6379 >

4.2 list 

1
2
3
4
5
6
7
8
9
10
11
127.0 . 0.1 : 6379 > rpush friends  'zhangsan'
(integer)  1
127.0 . 0.1 : 6379 > rpush friends  'lisi'
(integer)  2
127.0 . 0.1 : 6379 > rpush friends  'wangwu'
(integer)  3
127.0 . 0.1 : 6379 > lrange friends  0  - 1
1 "zhangsan"
2 "lisi"
3 "wangwu"
127.0 . 0.1 : 6379 >

4.3 hash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0 . 0.1 : 6379 > hset companyaddress province bj
(integer)  1
127.0 . 0.1 : 6379 > hset companyaddress area haidianqu
(integer)  1
127.0 . 0.1 : 6379 > hset companyaddress detail zhongguancun
(integer)  1
 
127.0 . 0.1 : 6379 > hgetall companyaddress
1 "province"
2 "bj"
3 "area"
4 "haidianqu"
5 "detail"
6 "zhongguancun"

5、下载Client jar

注意,这里和cassandra不同,没有使用jdbc驱动,原因,官方不建议使用,而且,jdbc驱动有一些问题,如,新版redis使用jdbc驱动存数据,写入数据库的是数据的长度 ,而非数据真实值。

cliendt jar包,我们选择jedis,位置 branches\mvn-repo\redis\clients\jedis\2.2.0\jedis-2.2.0.jar

或者直接从这里下载 http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip(下载后直接去掉后缀名.zip就可以了)

6、使用java连接redis

记得引用上边的jar包,以下是主要java代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//redis -> jedis
import  java.util.List;
 
import  redis.clients.jedis.*;
 
public  class  redis_jedis {
 
     public  static  void  main(String[] args) {
         Jedis redis =  new  Jedis( "localhost" 6379 ); // 连接redis
         // String
         redis.del( "user" );
         redis.set( "user" "piaolingzxh" );
         System.out.println(redis.get( "user" ));
         // List
         redis.del( "edu" );
         redis.lpush( "edu" "xiaoxue" "chuzhong" "gaozhong" );
         List<String> eduList = redis.lrange( "edu" 0 , - 1 );
         for  ( int  i =  0 ; i < eduList.size(); i++) {
             System.out.print(eduList.get(i) +  "\t" );
         }
         System.out.println();
 
         // hash key field value
         redis.del( "home_address" );
         redis.hset( "home_address" "province" "henan" );
         redis.hset( "home_address" "city" "sanmenxia" );
         redis.hset( "home_address" "detail" "what a u doing?" );
 
         List list = redis.hmget( "home_address" "province" "city" "detail" );
         for  ( int  i =  0 ; i < list.size(); i++) {
             System.out.print(list.get(i) +  "\t" );
         }   
     }
}

  

 到数据库中查看结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
C:\Users\zxh
λ cd D:\Programs\redis- 2.8 . 19
 
C:\Users\zxh
λ d:
 
D:\Programs\redis- 2.8 . 19
λ redis-cli.exe -h  127.0 . 0.1  -p  6379
127.0 . 0.1 : 6379 > KEYS *o*
(empty list or set)
 
 
127.0 . 0.1 : 6379 > keys *
1 "home_address"
2 "edu"
3 "user"
127.0 . 0.1 : 6379 > get user
"piaolingzxh"
 
127.0 . 0.1 : 6379 > lrange edu  0  - 1
1 "gaozhong"
2 "chuzhong"
3 "xiaoxue"
 
127.0 . 0.1 : 6379 > hgetall home_address
1 "province"
2 "henan"
3 "city"
4 "sanmenxia"
5 "detail"
6 "what a u doing?"

7:Scala 连接 redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//redis -> jedis
import  redis.clients.jedis.Jedis;
 
object redis_jedis {
   def main(args: Array[String]): Unit = {
     var redis =  new  Jedis( "localhost" 6379 );
     // String
     redis.del( "user" );
     redis.set( "user" "piaolingzxh" );
     System.out.println(redis.get( "user" ));
 
     // List
     redis.del( "edu" );
     redis.lpush( "edu" "xiaoxue" "chuzhong" "gaozhong" );
     redis.lrange( "edu" 0 , - 1 ).toArray().foreach((str) => System.out.print(str +  "\t" ));
     System.out.println();
 
     // hash key field value
      redis.del( "home_address" );
     redis.hset( "home_address" "province" "henan" );
     redis.hset( "home_address" "city" "sanmenxia" );
     redis.hset( "home_address" "detail" "what a u doing?" );
 
     redis.hmget( "home_address" "province" "city" "detail" ).toArray().foreach((str) => System.out.print(str +  "\t" ));
     System.out.println();
 
   }
} 

8:附redis指令集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
连接操作相关的命令
 
quit:关闭连接(connection)
auth:简单密码认证
 
持久化
 
save:将数据同步保存到磁盘
bgsave:将数据异步保存到磁盘
lastsave:返回上次成功将数据保存到磁盘的Unix时戳
shundown:将数据同步保存到磁盘,然后关闭服务
 
远程服务控制
 
info:提供服务器的信息和统计
monitor:实时转储收到的请求
slaveof:改变复制策略设置
config:在运行时配置Redis服务器
 
对value操作的命令
 
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
select(index):按索引查询
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key
flushall:删除所有数据库中的所有key
 
对String操作的命令
 
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增 1 操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减 1 操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串
 
对List操作的命令
 
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
 
对Set操作的命令
 
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素
 
对Hash操作的命令
 
hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field
hincrby(key, field, integer):将名称为key的hash中field的value增加integer
hexists(key, field):名称为key的hash中是否存在键为field的域
hdel(key, field):删除名称为key的hash中键为field的域
hlen(key):返回名称为key的hash中元素个数
hkeys(key):返回名称为key的hash中所有键
hvals(key):返回名称为key的hash中所有键对应的value
hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

  参考:http://www.cnblogs.com/oubo/archive/2011/09/07/2394568.html

 转自:http://www.cnblogs.com/piaolingzxh/p/4199999.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值