redis介绍(1)命令介绍
redis 的五大基本类型的简单命令
对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操作
package deifeng.testRedis; import java.util.HashMap;
import java.util.List;
import java.util.Set; import org.junit.Test; import redis.clients.jedis.BinaryClient.LIST_POSITION;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple; /**
*
* @author Administrator
* timer:2017年2月18日下午11:02:24
* intro:TODO
*/
public class TestCRUD {
//创建redis 的客户端连接,绑定主机和端口号
private static String host="127.0.0.1";
private static int port =6379;
private Jedis jedis = TestCRUD.getRedisUtil(host, port); //测试连接
public void testConn(){
System.out.println(jedis);
} /**
* 测试redis的五大基本类型操作
*/
/**
* String 类型的简单命令
*
* 一 -------多
* set mset
*/
@Test
public void testString(){
//获取jedis对象 返回key=hhy2的type类型
/*String type = jedis.type("hhy2");
System.out.println(type);*/
/**
* 存储一个数据
*
* set -------mset
*/
//jedis.flushDB(); flushAll
String key1 = jedis.set("hhy", "hhy");
System.out.println(jedis.get("hhy"));
//是在key不存在,才会执行set操作,如果key存在,则此操作无效,返回值1代表成功,0代表失败
//setnx ------msetnx
Long setnx = jedis.setnx("hhy1", "zs");
System.out.println(setnx);//1 代表插入的key在redis库中不存在
//setex ---- mstex
jedis.setex("hhy", 100, "zsq");//100有效期 Long tt = jedis.ttl("hhy");
System.out.println(tt);
/**
* 存储多个数据
* mget key1 value1 key2 value2...
* 类似于set对一个数据存储的语法
*/ /**
* getrange
* getrange key star end
*
* 解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1,
* 一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。
*
* setrange
* 用value重写key值的一部分,偏移量由offset指定
*
*/ jedis.set("test", "test123456");
System.out.println(jedis.getrange("test", 2, 5)); /**
* getset
*/
String getset = jedis.getSet("hhy", "123");
System.out.println(getset); Long ll = jedis.append("hhy", "123");//添加以后的长度 /**
* 递增/减
* incr / incrby ++ / decr /decrby --
*/
Long incr = jedis.incr("21");
System.out.println(incr); /**
* 删除key
* del
*/
jedis.del("hhy");
System.out.println("=====================");
Set<String> keys = jedis.keys("*");
for (String string : keys) {
System.out.println(string +"---->"+jedis.get(string));
} } /**
* redis ---- List
* lpush rpush linsert 添加命令
* lpop rpop 删除命令
* lrange llen lindex 查询命令
* lset 修改命令
* rpoplpush 两个列表A,B,将A列表的尾元素添加到B列表的头元素中
*/
@Test
public void testList(){
jedis.flushDB();//清空当前库
//添加一个list集合
/**
* 如果保证顺序
* left 降序
* right 顺序
*/
jedis.lpush("zs", "3","2","1");//左侧插入一个list集合
jedis.rpush("li", "7","8","9");
/*
//遍历li集合
List<String> list = jedis.lrange("li", 0, -1);
for (String str : list) {
System.out.println(str);
} System.out.println("============");
//linsert插入一条数据
jedis.linsert("zs", LIST_POSITION.AFTER, "2", "12");
//遍历li集合
List<String> zs = jedis.lrange("zs", 0, -1);
for (String str : zs) {
System.out.println(str);
} //del
*//**
* lpop rpop 分别代表是从左|右侧删除一条数据
* 并且把删除的数据值返回过来
*//*
System.out.println(jedis.lpop("zs")); *//**
* 查询命令 lindex llen
*//* System.out.println(jedis.lindex("li", 1));
System.out.println(jedis.lset("zs", 0, "hhy")); */
jedis.rpoplpush("li", "zs");
System.out.println("--------------");
List<String> zs1 = jedis.lrange("zs", 0, -1);
for (String string : zs1) {
System.out.println(string);
}
} /**
* Redis -- Set
*/
@Test
public void testSet(){
jedis.flushDB();
jedis.sadd("ss", "1","2","3");
System.out.println(jedis.smembers("ss"));
//在客户端命令中。存在是1 不存在是0
System.out.println(jedis.sismember("ss", "2"));
//set集合 的大小
System.out.println(jedis.scard("ss"));
//返回set集合中随机数据
System.out.println(jedis.srandmember("ss"));
//随即返回redis 中的key
System.out.println(jedis.randomKey()); /**
* spop随机删除set集合的一个数据
* 集合之间的 操作
*
* sinter 交集
* sunion 并集
* sdiff 差集
* smove 把 1 集合转移到 2中
* >smove youSet mySet 4 ---将youSet中的数据4移除的同时将数据4添加到mySet中
*/
jedis.sinter("可扩展的key,求交集");
jedis.sunion("可扩展的key,求并集");
jedis.sdiff("可扩展的key,求差集"); } /**
* sorted-sort
*
* zadd 一次只能添加一个
*/
@Test
public void testSortedSort(){
jedis.flushDB();
jedis.zadd("hhy", 100, "zs");
jedis.zadd("hhy", 101, "zs1");
jedis.zadd("hhy", 102, "zs2");
jedis.zadd("hhy", 103, "zs3");
//获取zset集合中的值 --- 是一个集合 asc
/**zrange asc
* zrevrange desc
*/
Set<String> set = jedis.zrange("hhy", 0, -1);
for (String str : set) {
//获取分数
System.out.println(str);
//通过这个集合中的值,查询每一个值所对应的分数
Double zscore = jedis.zscore("hhy", str);
System.out.println(zscore);
}
//可以直接获取到值--分数的对应关系,封装到tuple对象中
Set<Tuple> set2 = jedis.zrangeWithScores("hhy", 0, -1);
for (Tuple tuple : set2) {
System.out.println(tuple.getScore()+" --->"+tuple.getElement());
}
//查看zset集合中的数据zs1是第一名
Long zrank = jedis.zrank("hhy", "zs1");
System.out.println(zrank);
} /**
* hash类型的操作
* 基本命令的操作
*/
@Test
public void testHash(){
/**
* 如何在user中再存一个对象?
*/
jedis.hset("user", "name", "hhy");
jedis.hset("user", "age", "25");
//jedis.hmset("u", new HashMap<String,String>());
System.out.println(jedis.hget("user", "name"));
//查询hash中的所有filed和value
jedis.hkeys("user");
jedis.hvals("user");
//s设置多个值和获取多个值 hmset hmget //获取所有的filed
jedis.hgetAll("user");
//当前有多少数据
jedis.hlen("user");
} /**
* 创建redis的连接对象
* @param host 主机
* @param port 端口号
* @return jedis对象
*/
public static Jedis getRedisUtil(String host,int port){
return new Jedis(host,port);
} }
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介绍(1)命令介绍的更多相关文章
- redis GEO地理位置命令介绍
GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...
- redis事务及相关命令介绍
redis事务及相关命令介绍 一.概述:和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事 ...
- 四、Redis通配符介绍、命令缩写介绍和后面内容介绍讲解。
1.通配符介绍 ? 匹配一个字符 * 匹配任意个(包括 0 个)字符 [] 匹配括号间任一字符,可以使用 "-" 符号表示一个范围,如 a[b-d]匹配 "ab" ...
- 【redis】01Redis的介绍与安装部署
单元目标: 1.NoSQL介绍 2.Redis的介绍 3.Redis适用场合 4.Redis的安装与部署 5.Redis的数据类型 6.Redis的常用命令 7.Redis的高级应用 通过 ...
- Docker学习总结之Run命令介绍
Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...
- Redis 集群方案介绍
由于Redis出众的性能,其在众多的移动互联网企业中得到广泛的应用.Redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB.200GB的规模,但是单实例模式限制了Redis没法 ...
- Linux之sar命令介绍
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- 2.SDK目录结构和adb工具及命令介绍
安卓开发学习笔记 1.安卓开发之环境搭建 2.SDK目录结构和adb工具及命令介绍 1.SDK目录介绍: ******************************** add-ons:Androi ...
- git各种命令介绍以及碰到的各种坑
一.各种命令介绍: git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地 ...
随机推荐
- Yum Proxy
$ cat /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile ...
- 使用R进行分组统计
分组统计数据集是很常见的需求,R中也有相应的包支持数据集的分组统计.自己尝试了写了段R代码来完成分组统计数据集,支持公式,感觉用起来还算方便.代码分享在文章最后. 使用方式: step 1: sour ...
- Python基础5:列表 元祖 字典 集合 Json
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- (转)十分钟了结MySQL information_schema
十分钟了结MySQL information_schema 原文:http://www.cnblogs.com/shengdimaya/p/6920677.html information_sche ...
- (转)Mysql 索引原理及优化
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...
- 监督学习——决策树理论与实践(上):分类决策树
1. 介绍 决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路 ...
- Python -- 数据库连接
1.连接MySQL(x64系统装不上x32版本) MySQL现在都不支持Python3 import MySQLdb con = MySQLdb.connect(host='127.0.0.1', u ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- 编程开发(C/C++&Java&Python&JavaScript&Go&PHP&Ruby&Perl&R&Erlang)
使用Docker快速部署主流编程语言的开发.编译环境及其常用框架,包括C.C++.Java.Python.JavaScript.Go.PHP.Ruby.Perl.R.Erlang等. 在今后采用编程语 ...
- C#的TextBox获取行高
当TextBox使用多行之后,如果想获取每行的高度,似乎有点问题, TextBox.Height获取的是控件的高度, 而我们常做的是根据行的数量来决定是否要显示滚动条 如下: //不能直接获取每行的高 ...