本片文章只是简单描述
参考博客:http://futeng.iteye.com/blog/2071867
Redis官网:http://redis.io/download
其实官网已经给出下载安装步骤啦
$ wget http://download.redis.io/releases/redis-3.2.3.tar.gz
$ tar xzf redis-3.2.3.tar.gz
$ cd redis-3.2.3
$ make
但是在运行的时候,要加载自己修改过的配置文件,并且是后台运行&
./src/redis-server /srv/redis-3.2.3/redis.conf &
之后Ctrl +C 退出
redis 客户端使用:
./src/redis-cli
简单操作:
127.0.0.1:6379> set hello 12345
OK
127.0.0.1:6379> get hello
"12345"
以上只是本机启动啦!但并不能远程访问:
还需要修改配置文件(在Redis根目录下):
vim redis.conf
修改如下配置:
bind 127.0.0.1 这个意思是指定某个IP可以访问,把它注释掉
protected-mode yes 这个意思是开启保护模式,把它改为no
以上操作只是为了方便学习,实际部署中是不行的
然后需要kill 掉redis线程
[root@localhost redis-3.2.3]# ps -ef|grep redis
root 1976 1959 0 13:33 pts/0 00:00:00 ./src/redis-server *:6379
root 1985 1959 0 13:41 pts/0 00:00:00 grep --color=auto redis
[root@localhost redis-3.2.3]# kill -9 1976
然后重新启动
./src/redis-server /srv/redis-3.2.3/redis.conf &
之后Ctrl +C 退出
在本机电脑直接 telnet [ip] [端口]
qiufeihudeMBP:~ QiuFeihu$ telnet 192.168.99.105 6379
Trying 192.168.99.105...
Connected to 192.168.99.105.
Escape character is '^]'.
get hello
$3
123
Java操作
Maven配置文件添加:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
Java代码:
Jedis jedis = new Jedis("192.168.99.105", 6379);
jedis.set("name", "小硕");
System.out.println("运行结果:"+jedis.get("name"));
运行结果:
运行结果:小硕
详细操作:
key - value 存储结构
@Test
public void testString(){
Jedis jedis = new Jedis("192.168.99.105", 6379);
//-----添加数据----------
jedis.set("name", "小红");
System.out.println(jedis.get("name"));
jedis.append("name", "小白"); //拼接
System.out.println(jedis.get("name"));
jedis.del("name"); //删除某个键
System.out.println(jedis.get("name"));
//设置多个键值对
jedis.mset("name", "小明", "age", "23", "qq", "476777XXX");
jedis.incr("age"); //进行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
}
运行结果:
小红
小红小白
null
小明-24-476777XXX
Map结构:
@Test
public void testMap() {
Jedis jedis = new Jedis("192.168.99.105", 6379);
//-----添加数据----------
Map<String, String> map = new HashMap<String, String>();
map.put("name","小米");
map.put("age", "22岁");
map.put("qq", "123456");
map.put("爱好", "看书");
jedis.del("userSet");
jedis.hmset("userSet", map);
//取出userSet中的name,执行结果:[minxr]-->注意结果是一个泛型的List
//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
List<String> rsmap = jedis.hmget("userSet", "name", "age", "qq","爱好");
System.out.println(rsmap);
//删除map中的某个键值
jedis.hdel("userSet", "age");
System.out.println(jedis.hmget("userSet", "age")); //因为删除了,所以返回的是null
System.out.println(jedis.hlen("userSet")); //返回key为userSet的键中存放的值的个数3
System.out.println(jedis.exists("userSet"));//是否存在key为userSet的记录 返回true
System.out.println(jedis.hkeys("userSet"));//返回map对象中的所有key
System.out.println(jedis.hvals("userSet"));//返回map对象中的所有value
//可以用循环Map的方式打印
for(String key : jedis.hkeys("userSet")){
System.out.println(key + ":" + jedis.hmget("userSet", key).get(0)); //值存的是List
}
}
运行结果:
[小米, 22岁, 123456, 看书]
[null]
3
true
[name, qq, 爱好]
[看书, 小米, 123456]
name:小米
qq:123456
爱好:看书
List 结构:
@Test
public void testList() {
Jedis jedis = new Jedis("192.168.99.105", 6379);
//开始前,先移除所有的内容
jedis.del("userSetList");
System.out.println(jedis.lrange("list", 0, -1));
//先向key userSetList中存放三条数据
jedis.lpush("userSetList", "spring");
jedis.lpush("userSetList", "struts");
jedis.lpush("userSetList", "hibernate");
//再取出所有数据jedis.lrange是按范围取出,
// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
List<String> list = jedis.lrange("userSetList", 0, -1);
System.out.println(list.get(0));
System.out.println(list);
jedis.del("userSetList");
jedis.rpush("userSetList", "spring");
jedis.rpush("userSetList", "struts");
jedis.rpush("userSetList", "hibernate");
System.out.println(jedis.lrange("userSetList", 0, -1));
}
运行结果:
[]
hibernate
[hibernate, struts, spring]
[spring, struts, hibernate]
Set结构:
Jedis jedis = new Jedis("192.168.99.105", 6379);
//添加
jedis.del("userSet");
jedis.sadd("userSet", "liuling");
jedis.sadd("userSet", "xinxin");
jedis.sadd("userSet", "ling");
jedis.sadd("userSet", "zhangxinxin");
jedis.sadd("userSet", "who");
//移除noname
jedis.srem("userSet", "who");
System.out.println(jedis.smembers("userSet"));//获取所有加入的value
System.out.println(jedis.sismember("userSet", "who"));//判断 who 是否是userSet集合的元素
System.out.println(jedis.srandmember("userSet"));
System.out.println(jedis.scard("userSet"));//返回集合的元素个数
运行结果:
false
ling
4