有关Windows下Redis的安装和使用,请参考我的上一篇文章:http://www.youcl.com/article/1120.html
Java操作redis
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java开发环境配置
-
首先你需要下载驱动包,下载 jedis.jar,确保下载最新驱动包,或到http://search.maven.org/#search%7Cga%7C1%7Cjedis下载
-
在你的classpath中包含该驱动包。
连接到 redis 服务测试
运行命令之前,开启redis服务
import redis.clients.jedis.Jedis;public class RedisJava { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); //查看服务是否运行 System.out.println("Server is running: "+jedis.ping()); }} 输出 Connection to server sucessfully Server is running: PONG # Server redis_version:3.2.100 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:dd26f1f93c5130ee redis_mode:standalone os:Windows arch_bits:64 multiplexing_api:WinSock_IOCP process_id:16928 run_id:1cbe662389106abbaf62f6e518e3a7744be44731 tcp_port:6379 uptime_in_seconds:245 uptime_in_days:0 hz:10 lru_clock:1425135 executable:D:\Program Files\Redis\"D:\Program Files\Redis\redis-server.exe" config_file:D:\Program Files\Redis\redis.windows-service.conf # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:690352 used_memory_human:674.17K used_memory_rss:631576 used_memory_rss_human:616.77K used_memory_peak:690352 used_memory_peak_human:674.17K total_system_memory:0 total_system_memory_human:0B used_memory_lua:37888 used_memory_lua_human:37.00K maxmemory:104857600 maxmemory_human:100.00M maxmemory_policy:noeviction mem_fragmentation_ratio:0.91 mem_allocator:jemalloc-3.6.0 # Persistence loading:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 rdb_last_save_time:1477819898 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok # Stats total_connections_received:1 total_commands_processed:1 instantaneous_ops_per_sec:0 total_net_input_bytes:28 total_net_output_bytes:7 instantaneous_input_kbps:0.00 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:0.05 used_cpu_user:0.08 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace
Java redis 操作字符串
public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); // -----添加数据---------- jedis.set("name", "X-rapido"); System.out.println(jedis.get("name")); // -----修改数据---------- // 1、在原来基础上修改 jedis.append("name", "youcl.com"); System.out.println(jedis.get("name")); // 2、直接覆盖原来的数据 jedis.set("name", "优客志"); System.out.println(jedis.get("name")); // 删除key对应的记录 jedis.del("name"); System.out.println(jedis.get("name")); // 执行结果:null /** * mset相当于 jedis.set("name","优客志"); jedis.set("domain","youcl.com"); */ jedis.mset("name", "优客志", "domain", "youcl.com"); System.out.println(jedis.mget("name", "domain")); } 输出 Connection to server sucessfully X-rapido X-rapidoyoucl.com 优客志 null [优客志, youcl.com
Java redis操作Map
public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); Map<String, String> user = new HashMap<String, String>(); user.put("name", "X-rapido"); user.put("pwd", "password"); jedis.hmset("user", user); // 取出user中的name,执行结果:[X-rapido]-->注意结果是一个泛型的List // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数 List<String> rsmap = jedis.hmget("user", "name"); System.out.println(rsmap); // 删除map中的某个键值 // jedis.hdel("user","pwd"); System.out.println(jedis.hmget("user", "pwd")); // 因为删除了,所以返回的是null System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数1 System.out.println(jedis.exists("user")); // 是否存在key为user的记录 返回true System.out.println(jedis.hkeys("user")); // 返回map对象中的所有key [pwd, name] System.out.println(jedis.hvals("user")); // 返回map对象中的所有value [X-rapido, password] Iterator<String> iter = jedis.hkeys("user").iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + jedis.hmget("user", key)); } } 操作 Connection to server sucessfully [X-rapido] [password] 2 true [pwd, name] [password, X-rapido] pwd:[password] name:[X-rapido]
Java jedis操作Set
public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); // 添加 jedis.sadd("sname", "X-rapido"); jedis.sadd("sname", "youcl.com"); jedis.sadd("sname", "优客志"); jedis.sadd("sanme", "noname"); // 移除noname jedis.srem("sname", "noname"); System.out.println(jedis.smembers("sname")); // 获取所有加入的value System.out.println(jedis.sismember("sname", "X-rapido")); // 判断 X-rapido,是否是sname集合的元素 System.out.println(jedis.srandmember("sname")); System.out.println(jedis.scard("sname")); // 返回集合的元素个数 } 操作 Connection to server sucessfully [X-rapido, 优客志, youcl.com] true X-rapido 3
Redis Java List(列表) 实例
public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); // 存储数据到列表中 jedis.lpush("tutorial-list", "Redis"); jedis.lpush("tutorial-list", "Mongodb"); jedis.lpush("tutorial-list", "Mysql"); // 获取存储的数据并输出 List<String> list = jedis.lrange("tutorial-list", 0, 5); for (int i = 0; i < list.size(); i++) { System.out.println("Stored string in redis:: " + list.get(i)); } } 输出 Connection to server sucessfully Stored string in redis:: Mysql Stored string in redis:: Mongodb Stored string in redis:: Redis
jedis操作list介绍
lpush(key) | 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型 |
rpush(key) | 同上,在尾部添加 |
llen(key) | 返回key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误 |
lrange(key,start,end) | 返回指定区间内的元素,下标从0开始,负值表示从后面计算,-1表示倒数第一个元素 ,key不存在返回空列表 |
ltrim(key,start,end) | 截取list,保留指定区间内元素,成功返回1,key不存在返回错误 |
lset( key,index,value) | 设置list中指定下标的元素值,成功返回1,key或者下标不存在返回错误 |
lrem(key,count,value) | 从key对应list中删除count个和value相同的元素。count为0时候删除全部 |
lpop(key) | 从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误 |
rpop(key) | 同上,但是从尾部删除 |
Redis Java Keys 实例(遍历所有key)
public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); // 获取数据并输出 Set<String> lists = jedis.keys("*"); for (String str : lists) { System.out.println("List of stored keys:: " + str); } } 输出 Connection to server sucessfully List of stored keys:: sex List of stored keys:: name List of stored keys:: age
其他示例
public static void main(String[] args) throws InterruptedException { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); //keys中传入的可以用通配符 System.out.println(jedis.keys("*")); //返回当前库中所有的key System.out.println(jedis.keys("*name")); //返回的sname [sname, name] System.out.println(jedis.del("sanmdde")); //删除key为sanmdde的对象 删除成功返回1 删除失败(或者不存在)返回 0 System.out.println(jedis.ttl("sname")); //返回给定key的有效时间,如果是-1则表示永远有效 jedis.setex("timekey", 10, "min"); //通过此方法,可以指定key的存活(有效时间) 时间为秒 Thread.sleep(5000); //睡眠5秒后,剩余时间将为<=5 System.out.println(jedis.ttl("timekey")); //输出结果为5 jedis.setex("timekey", 1, "min"); //设为1后,下面再看剩余时间就是1了 System.out.println(jedis.ttl("timekey")); //输出结果为1 System.out.println(jedis.exists("key")); //检查key是否存在 System.out.println(jedis.rename("timekey","time")); System.out.println(jedis.get("timekey")); //因为移除,返回为null System.out.println(jedis.get("time")); //因为将timekey 重命名为time 所以可以取得值 min //jedis 排序 //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) jedis.del("a");//先清除数据,再加入数据进行测试 jedis.rpush("a", "1"); jedis.lpush("a","6"); jedis.lpush("a","3"); jedis.lpush("a","9"); System.out.println(jedis.lrange("a",0,-1)); // [9, 3, 6, 1] System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //输入排序后结果 System.out.println(jedis.lrange("a",0,-1)); } 输出 Connection to server sucessfully [sex, sanme, name, age, domain, sname, user] [sname, name] 0 -1 5 1 false OK null min [9, 3, 6, 1] [1, 3, 6, 9] [9, 3, 6, 1]
相关阅读
Redis教程 —— redis简介:
Redis教程 —— windows下redis的安装使用教程 :https://www.youcl.com/info/3056
Redis教程 —— Redis的密码设置:
a Redis教程 —— redis常用命令示例:
Redis教程 —— redis常用命令速查一览表:
Redis教程 —— Java操作Redis增删改查 :https://www.youcl.com/info/2470