redis的基本命令整理
来源:互联网 发布:java工作两年工资 编辑:程序博客网 时间:2024/05/12 13:47
对key--value中的value的一些简单命令
keys * 查询redis中的所有key
exists key 查询key是否存在
flushdb 清空当前库
flushall 清空所有库 总共16个库,默认0号库
select(库号0-15)选择库
dbsize 返回当前库中有多少key
randomkey 随机返回一个key
ttl 获得一个key还剩下多少时间
expire 设置一个key的有效时间
move(key,dbindex) 把当前key转移到制定库
del key删除一个key
type key[hhy] 返回当前key的类型【五种】
rename[了解]
持久化
- save:将数据同步保存到磁盘
- bgsave:将数据异步保存到磁盘
- lastsave:返回上次成功将数据保存到磁盘的Unix时戳
- shundown:将数据同步保存到磁盘,然后关闭服务
远程服务控制
- info:提供服务器的信息和统计
- monitor:实时转储收到的请求
- slaveof:改变复制策略设置
- config:在运行时配置Redis服务器
对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的一个元素
Sorted-sort【zset】集合
zset 是sets 一个升级 ,是有序集合,这一属性在添加修改元素的时候可以指定,
每次指定后,zset 会自动冲洗按心的值调整顺序,可以理解为两列的mysql表
一两存value,一列存顺序,key理解为zset名字
zadd 向集合中添加一个元素 如果值存在则更新顺序号
zadd myset 1 one
zadd myset 2 two
zadd myset 3 three
2 zrange
zrange myset 0 -1 withscores withscores显示 顺序号
3 zrem 删除一个元素
zrem myset two
4 zincrby 对序号进行增加
zincrby myset 3 one 顺序号增加3个
zincrby myset -3 one 顺序号减少3个
5 zrank 按照索引排序 ,返回索引值
zrank myset one
6 zrevrank 返回名称为key 的zset 中member 元素的排名
(按照score从大到小的排序)即下标
zrevrank myset two
7 zrevrange 降序排序
8 zrangebyscore
zrangebyscore myset 2 3 withscores
这里的2 和3 是顺序 不是inex
9 zcount
返回score在给定区间的数量
zcount myset 2 4
10 zcard 返回所有元素个数
zcard myset
11 zremrangebyrank 删除集合中排名在给定区间的元素
按照索引删除
zremrangebyrank myset 1 1
1 代表索引
12 zremrangebyscore 按照顺序删除
zremrangebyscore myset 2 5
对Hash操作的命令(
Hash是一种数据结构,一般翻译做“散列”,也有直接音译为“哈希”。Redis hash 是一个string类型的field和value的映射表。它特别适合用于存储对象。同将对象的每个字段存成单个string类型,存储为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
代码实例:redis的CURD操作
1 package deifeng.testRedis; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Set; 6 7 import org.junit.Test; 8 9 import redis.clients.jedis.BinaryClient.LIST_POSITION; 10 import redis.clients.jedis.Jedis; 11 import redis.clients.jedis.Tuple; 12 13 /** 14 * 15 * @author Administrator 16 * timer:2017年2月18日下午11:02:24 17 * intro:TODO 18 */ 19 public class TestCRUD { 20 //创建redis 的客户端连接,绑定主机和端口号 21 private static String host="127.0.0.1"; 22 private static int port =6379; 23 private Jedis jedis = TestCRUD.getRedisUtil(host, port); 24 25 26 27 //测试连接 28 public void testConn(){ 29 System.out.println(jedis); 30 } 31 32 /** 33 * 测试redis的五大基本类型操作 34 */ 35 /** 36 * String 类型的简单命令 37 * 38 * 一 -------多 39 * set mset 40 */ 41 @Test 42 public void testString(){ 43 //获取jedis对象 返回key=hhy2的type类型 44 /*String type = jedis.type("hhy2"); 45 System.out.println(type);*/ 46 /** 47 * 存储一个数据 48 * 49 * set -------mset 50 */ 51 //jedis.flushDB(); flushAll 52 String key1 = jedis.set("hhy", "hhy"); 53 System.out.println(jedis.get("hhy")); 54 //是在key不存在,才会执行set操作,如果key存在,则此操作无效,返回值1代表成功,0代表失败 55 //setnx ------msetnx 56 Long setnx = jedis.setnx("hhy1", "zs"); 57 System.out.println(setnx);//1 代表插入的key在redis库中不存在 58 //setex ---- mstex 59 jedis.setex("hhy", 100, "zsq");//100有效期 60 61 Long tt = jedis.ttl("hhy"); 62 System.out.println(tt); 63 /** 64 * 存储多个数据 65 * mget key1 value1 key2 value2... 66 * 类似于set对一个数据存储的语法 67 */ 68 69 70 /** 71 * getrange 72 * getrange key star end 73 * 74 * 解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1, 75 * 一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。 76 * 77 * setrange 78 * 用value重写key值的一部分,偏移量由offset指定 79 * 80 */ 81 82 jedis.set("test", "test123456"); 83 System.out.println(jedis.getrange("test", 2, 5)); 84 85 86 /** 87 * getset 88 */ 89 String getset = jedis.getSet("hhy", "123"); 90 System.out.println(getset); 91 92 Long ll = jedis.append("hhy", "123");//添加以后的长度 93 94 95 /** 96 * 递增/减 97 * incr / incrby ++ / decr /decrby -- 98 */ 99 Long incr = jedis.incr("21");100 System.out.println(incr);101 102 /**103 * 删除key104 * del105 */106 jedis.del("hhy");107 System.out.println("=====================");108 Set<String> keys = jedis.keys("*");109 for (String string : keys) {110 System.out.println(string +"---->"+jedis.get(string));111 }112 113 }114 115 116 117 /**118 * redis ---- List119 * lpush rpush linsert 添加命令120 * lpop rpop 删除命令121 * lrange llen lindex 查询命令122 * lset 修改命令123 * rpoplpush 两个列表A,B,将A列表的尾元素添加到B列表的头元素中124 */125 @Test126 public void testList(){127 jedis.flushDB();//清空当前库128 //添加一个list集合129 /**130 * 如果保证顺序131 * left 降序132 * right 顺序133 */134 jedis.lpush("zs", "3","2","1");//左侧插入一个list集合135 jedis.rpush("li", "7","8","9");136 /*137 //遍历li集合138 List<String> list = jedis.lrange("li", 0, -1);139 for (String str : list) {140 System.out.println(str);141 }142 143 System.out.println("============");144 //linsert插入一条数据145 jedis.linsert("zs", LIST_POSITION.AFTER, "2", "12");146 //遍历li集合147 List<String> zs = jedis.lrange("zs", 0, -1);148 for (String str : zs) {149 System.out.println(str);150 }151 152 //del153 *//**154 * lpop rpop 分别代表是从左|右侧删除一条数据155 * 并且把删除的数据值返回过来156 *//*157 System.out.println(jedis.lpop("zs"));158 159 160 *//**161 * 查询命令 lindex llen162 *//*163 164 System.out.println(jedis.lindex("li", 1));165 System.out.println(jedis.lset("zs", 0, "hhy"));166 167 */168 jedis.rpoplpush("li", "zs");169 System.out.println("--------------");170 List<String> zs1 = jedis.lrange("zs", 0, -1);171 for (String string : zs1) {172 System.out.println(string);173 }174 }175 176 177 178 /**179 * Redis -- Set180 */181 @Test182 public void testSet(){183 jedis.flushDB();184 jedis.sadd("ss", "1","2","3");185 System.out.println(jedis.smembers("ss"));186 //在客户端命令中。存在是1 不存在是0187 System.out.println(jedis.sismember("ss", "2"));188 //set集合 的大小189 System.out.println(jedis.scard("ss"));190 //返回set集合中随机数据191 System.out.println(jedis.srandmember("ss"));192 //随即返回redis 中的key193 System.out.println(jedis.randomKey());194 195 /**196 * spop随机删除set集合的一个数据197 * 集合之间的 操作198 * 199 * sinter 交集200 * sunion 并集201 * sdiff 差集202 * smove 把 1 集合转移到 2中203 * >smove youSet mySet 4 ---将youSet中的数据4移除的同时将数据4添加到mySet中204 */205 jedis.sinter("可扩展的key,求交集");206 jedis.sunion("可扩展的key,求并集");207 jedis.sdiff("可扩展的key,求差集");208 209 }210 211 /**212 * sorted-sort213 * 214 * zadd 一次只能添加一个215 */216 @Test217 public void testSortedSort(){218 jedis.flushDB();219 jedis.zadd("hhy", 100, "zs");220 jedis.zadd("hhy", 101, "zs1");221 jedis.zadd("hhy", 102, "zs2");222 jedis.zadd("hhy", 103, "zs3");223 //获取zset集合中的值 --- 是一个集合 asc224 /**zrange asc225 * zrevrange desc226 */227 Set<String> set = jedis.zrange("hhy", 0, -1);228 for (String str : set) {229 //获取分数230 System.out.println(str);231 //通过这个集合中的值,查询每一个值所对应的分数232 Double zscore = jedis.zscore("hhy", str);233 System.out.println(zscore);234 }235 //可以直接获取到值--分数的对应关系,封装到tuple对象中236 Set<Tuple> set2 = jedis.zrangeWithScores("hhy", 0, -1);237 for (Tuple tuple : set2) {238 System.out.println(tuple.getScore()+" --->"+tuple.getElement());239 }240 //查看zset集合中的数据zs1是第一名241 Long zrank = jedis.zrank("hhy", "zs1");242 System.out.println(zrank);243 }244 245 /**246 * hash类型的操作247 * 基本命令的操作248 */249 @Test250 public void testHash(){251 /**252 * 如何在user中再存一个对象?253 */254 jedis.hset("user", "name", "hhy");255 jedis.hset("user", "age", "25");256 //jedis.hmset("u", new HashMap<String,String>());257 System.out.println(jedis.hget("user", "name"));258 //查询hash中的所有filed和value259 jedis.hkeys("user");260 jedis.hvals("user");261 //s设置多个值和获取多个值 hmset hmget262 263 264 //获取所有的filed265 jedis.hgetAll("user");266 //当前有多少数据267 jedis.hlen("user");268 }269 270 /**271 * 创建redis的连接对象272 * @param host 主机273 * @param port 端口号274 * @return jedis对象275 */276 public static Jedis getRedisUtil(String host,int port){277 return new Jedis(host,port);278 }279 280 281 }
hash实现简单购物车
package deifeng.testRedis;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import redis.clients.jedis.Jedis;/** * * @author Administrator * timer:2017年2月21日上午9:54:33 * intro:使用hash类型模拟购物车的实现 */public class ShoppingGoods { //定义主机和端口号 private static String host = "127.0.0.1"; private static int port = 6379; //hash的那个key的名字 private static String hash_name = "huhy"; public static void main(String[] args) { //客户端连接redis Jedis jedis = new Jedis(host, port); Map<String, String> hash_goods = new HashMap<String, String>(); //添加到hash类型中数据 hash_goods.put("电视", "3"); hash_goods.put("书", "4"); hash_goods.put("大风车", "6"); hash_goods.put("衣服", "10"); jedis.hmset(hash_name, hash_goods); //当前有多少数据 //System.out.println(jedis.hlen(hash_name)+"个数据"); //遍历数据 List<String> list = new ArrayList<String>(); Set<String> sets = jedis.hkeys(hash_name);//查询key中出所有的fileds Iterator<String> fileds = sets.iterator(); while(fileds.hasNext()){ //System.out.println(fileds.next().toString()); //通过filed找到对应的value String filed = fileds.next(); String value = jedis.hget(hash_name, filed); System.out.println(filed+"------->"+value); //把查询出的filed存储到list集合中 list.add(filed); } //llist集合中保存的是数据的filed /** * 通过hmget的可以取多个值 * hmget(key filed ) ----> value */ List<String> ll = jedis.hmget(hash_name, list.get(0), list.get(1), list.get(2),list.get(3)); System.out.print(ll +" "); //hgetall命令 Map<String, String> map = jedis.hgetAll(hash_name); Set<Entry<String, String>> ss = map.entrySet(); Iterator<Entry<String, String>> ii = ss.iterator(); for (Entry<String, String> entry : ss) { System.out.println(entry.getKey() +"--->"+entry.getValue()); } //切断客户端连接 释放资源 jedis.disconnect(); }}
- redis的基本命令整理
- Redis常用的基本命令整理
- Redis的基本命令
- Redis的基本命令
- redis的基本命令
- Redis的基本命令
- redis的一些基本命令
- 基本GIT命令的整理
- Redis命令整理
- redis 命令 详解 整理
- Redis 命令整理
- redis操作命令整理
- redis的基本类型及操作命令
- Redis数据类型的基本命令(笔记)
- windows下redis的基本命令
- 关于linux 的基本命令(整理)
- 整理一下vim命令的基本用法
- redis基本操作命令
- 应用服务攻击工具clusterd
- cookie
- Springboot整合swagger2项目的部署问题
- 阿里云服务器建站
- Android学习笔记十一之Android基础UI二
- redis的基本命令整理
- pageHelper插件
- 成功在新浪博客安家,今后会陆续不…
- maven一键部署linux的tomcat(wagon-maven-plugin)
- 我的技术面网盘《一号网盘》
- CCIE-MPLS VPN-实验手册(上卷)
- maven的安装步骤
- maven与ide工具的整合
- CCIE-MPLS基础篇-实验手册