Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
执行redis命令必须先要启动客户端。
#连接本地
redis-cli
#连接远程,加上Ip和密码参数。
redis-cli -h 127.0.0.1 -p 6379 -a "password"
可以用任何二进制的序列作为Key, 比如”key”,或者二进制图片的内容,都能作为key。
比较好的习惯是通过冒号:,把Key分成几段。如
user:zhangsan:name
127.0.0.1:6379> set myname redis
OK
127.0.0.1:6379> get myname
"redis"
127.0.0.1:6379>
设置多个值
127.0.0.1:6379> mset user:zhangsan:name zhangsan user:zhangsan:password 123456
OK
127.0.0.1:6379> mget user:zhangsan:name user:zhangsan:password
1) "zhangsan"
2) "123456"
存储键值对
127.0.0.1:6379> hmset user:zhangsan name "zhangsan" password "123456"
OK
127.0.0.1:6379> hvals user:zhangsan
1) "zhangsan"
2) "123456"
得到所有的Key
127.0.0.1:6379> hkeys user:zhangsan
1) "name"
2) "password"
得到单个值
127.0.0.1:6379> hget user:zhangsan password
"123456"
列表包含多个有序值,既可以作为队列(先进先出),也可以作为栈(后进先出)
LRANGE获取元素,指定第一个位置和最后一个位置,负数表示到末尾。
127.0.0.1:6379> rpush zhangsan:weblist www.baidu.com www.163.com www.google.com
(integer) 3
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.baidu.com"
2) "www.163.com"
3) "www.google.com"
删除指定的值, 数字代表删除多少个,为0时表示删除所有。
127.0.0.1:6379> lrem zhangsan:weblist 0 www.163.com
(integer) 1
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.baidu.com"
2) "www.google.com"
像队列一样获取第一个值弹出,lpop从左边,rpop从右边
127.0.0.1:6379> lpop zhangsan:weblist
"www.baidu.com"
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.google.com"
像队列一样压入值,lpush左边,rpush右边
127.0.0.1:6379> lpush zhangsan:weblist www.sohu.com
(integer) 2
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.sohu.com"
2) "www.google.com"
阻塞list, 阻塞知道有值可以取到, 后面的参数表示等待的秒数,我这里例子是等待1分钟
127.0.0.1:6379> brpop zhangsan:book 60
无序,没有重复值
127.0.0.1:6379> sadd zhangsan:book h1 h2 h3 h4 h5
(integer) 5
127.0.0.1:6379> smembers zhangsan:book
1) "h4"
2) "h3"
3) "h2"
4) "h1"
5) "h5"
取得两个的交集:sinter
127.0.0.1:6379> sadd lisi:book h2 h3 h6 h7
(integer) 2
127.0.0.1:6379> smembers lisi:book
1) "h3"
2) "h2"
3) "h6"
4) "h7"
127.0.0.1:6379> sinter zhangsan:book lisi:book
1) "h3"
2) "h2"
找出不同的值
127.0.0.1:6379> sdiff zhangsan:book lisi:book
1) "h4"
2) "h5"
3) "h1"
string 类型的集合,不允许有重复的元素。
每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
127.0.0.1:6379> zadd sites 100 baidu 50 sohu 900 google
(integer) 3
127.0.0.1:6379> zadd sites 1 pptv
(integer) 1
127.0.0.1:6379> zadd sites 3 letv
(integer) 1
127.0.0.1:6379> zrange sites 0 -1
1) "pptv"
2) "letv"
3) "sohu"
4) "baidu"
5) "google"
找出某一分数范围的数据
127.0.0.1:6379> zrangebyscore sites 1 100
1) "pptv"
2) "letv"
3) "sohu"
4) "baidu"
标记一个键为到期,EXPIRE命令
ttl查询还剩余的时间
127.0.0.1:6379> set city beijing
OK
127.0.0.1:6379> expire city 20
(integer) 1
127.0.0.1:6379> ttl city
(integer) 17
SETEX直接创建一个有期限的string
127.0.0.1:6379> setex city 20 beijing
OK
127.0.0.1:6379> ttl city
(integer) 7
更多命令参考:http://www.redis.cn/commands.html
Java使用Jedis包来操作redis
引入jedis:
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.9.0version>
dependency>
示例
import redis.clients.jedis.Jedis;
public class RedisTest {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//字符串
jedis.set("runoobkey", "www.runoob.com");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
//list
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 获取存储的数据并输出
List list = jedis.lrange("site-list", 0 ,2);
for(int i=0; iout.println("列表项为: "+list.get(i));
}
}
}