基于Spark的机器学习资料63后台服务工具redis详解redis操作命令.docx
- 文档编号:14412290
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:49
- 大小:28.99KB
基于Spark的机器学习资料63后台服务工具redis详解redis操作命令.docx
《基于Spark的机器学习资料63后台服务工具redis详解redis操作命令.docx》由会员分享,可在线阅读,更多相关《基于Spark的机器学习资料63后台服务工具redis详解redis操作命令.docx(49页珍藏版)》请在冰点文库上搜索。
基于Spark的机器学习资料63后台服务工具redis详解redis操作命令
后台服务工具redis:
详解redis操作命令
1、登录
[root@bigdata1bin]#./redis-cli本机登录
[root@bigdata1bin]#./redis-cli-h127.0.0.1-p6379–apassword远程登录
127.0.0.1:
6379>quit退出
2、数据类型
Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:
有序集合)。
String(字符串):
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。
意思是redis的string可以包含任何数据。
比如jpg图片或者序列化的对象。
String类型是Redis最基本的数据类型,一个键最大能存储512MB。
Hash(哈希):
Redishash是一个键值(key=>value)对集合。
Redishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
每个hash可以存储232-1键值对(40多亿)。
List(列表):
Redis列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储232-1元素(4294967295,每个列表可存储40多亿)。
Set(集合):
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O
(1)。
Zset(有序集合):
Rediszset和set一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
3、命令介绍
String(字符串):
127.0.0.1:
6379>SETkey"value"设置key
127.0.0.1:
6379>GETkey读取key
127.0.0.1:
6379>GETRANGEkey03读取key对应的value前四个字符
127.0.0.1:
6379>GETSETdbmongodb设定key的value,并返回旧value,没有旧值,返回nil
127.0.0.1:
6379>MGETkey1key2返回一个或者多个给定的key值
Hash(哈希):
127.0.0.1:
6379>HMSETmyhashfield1"Hello"field2"World"同时将多个field-value(字段-值)对设置到哈希表中。
127.0.0.1:
6379>HGETKEY_NAMEFIELD_NAME用于返回哈希表中指定字段的值
127.0.0.1:
6379>HEXISTSmyhashfield1哈希表含有给定字段,返回1。
如果哈希表不含有给定字段,或key不存在,返回0
127.0.0.1:
6379>HKEYSmyhash获取哈希表中的所有域(field)
List(列表):
127.0.0.1:
6379>LPUSHKEY_NAMEVALUE1..VALUEN将一个或多个值插入到列表头部
127.0.0.1:
6379>LRANGElist10-1返回列表中指定区间内的元素
Set(集合):
127.0.0.1:
6379>SADDmyset"hello"命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
127.0.0.1:
6379>SMEMBERSmyset1返回集合中的所有的成员。
不存在的集合key被视为空集合。
Zset(有序集合):
127.0.0.1:
6379>ZADDmyzset2"two"3"three"用于将一个或多个成员元素及其分数值加入到有序集当中。
127.0.0.1:
6379>ZCARDmyzset获取结合中元素的数量。
4、封装的redis基本命令
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importjava.util.Set;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importredis.clients.jedis.BinaryClient;
importredis.clients.jedis.BinaryClient.LIST_POSITION;
importredis.clients.jedis.JedisCluster;
importmons.logging.Log;
importmons.logging.LogFactory;
publicclassredisCluster{
privatestaticfinalLoglog=LogFactory.getLog(redisCluster.class);
JedisClusterjedisCluster=null;
ClassPathXmlApplicationContextcontext=null;
/**
*构造函数,初始化jedis连接池
*/
publicredisCluster(){
try{
context=newClassPathXmlApplicationContext("classpath:
spring/spring-context.xml");
context.start();
jedisCluster=(JedisCluster)context.getBean("jedisCluster");
}
catch(Exceptione){
log.error("==>redisClustercontextstarterror:
",e);
context.stop();
System.exit(0);
}
}
/**
*关闭连接
*/
publicvoidcloseRedisCluster(){
jedisCluster.close();
}
//Key(键)
/**
*删除指定的key
*@paramkey
*@return删除的数量
*/
publicLongdelete(Stringkey){
returnjedisCluster.del(key);
}
/**
*检查指定的key是否存在
*@paramkey
*@return存在:
返回1不存在:
返回0
*/
publicBooleanexists(Stringkey){
returnjedisCluster.exists(key);
}
/**
*为给定key设置生存时间,当key过期时(生存时间为0),它会被自动删除
*可以对一个已经带有生存时间的key执行EXPIRE命令,新指定的生存时间会取代旧的生存时间
*@paramkey
*@paramseconds秒
*@return成功:
返回1失败:
返回0
*/
publicLongexpire(Stringkey,intseconds){
returnjedisCluster.expire(key,seconds);
}
/**
*EXPIREAT的作用和EXPIRE类似,都用于为key设置生存时间
*不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unixtimestamp)
*@paramkey
*@paramunixTime秒
*@return成功:
返回1失败:
返回0
*/
publiclongexpireAt(Stringkey,longunixTime){
returnjedisCluster.expireAt(key,unixTime);
}
/**
*将当前数据库的key移动到给定的数据库db当中
*如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果
*@paramkey
*@paramdbIndex
*@return成功:
返回1失败:
返回0
*/
publicLongmove(Stringkey,intdbIndex){
returnjedisCluster.move(key,dbIndex);
}
/**
*移除给定key的生存时间,将这个key从『易失的』(带生存时间key)转换成『持久的』(一个不带生存时间、永不过期的key)
*@paramkey
*@return成功:
返回1失败:
返回0
*/
publiclongpersist(Stringkey){
returnjedisCluster.persist(key);
}
/**
*为给定key设置生存时间,当key过期时(生存时间为0),它会被自动删除
*可以对一个已经带有生存时间的key执行EXPIRE命令,新指定的生存时间会取代旧的生存时间
*@paramkey
*@paramseconds毫秒
*@return成功:
返回1失败:
返回0
*/
publiclongpexpire(Stringkey,longmilliseconds){
returnjedisCluster.pexpire(key,milliseconds);
}
/**
*EXPIREAT的作用和EXPIRE类似,都用于为key设置生存时间
*不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unixtimestamp)
*@paramkey
*@paramunixTime毫秒
*@return成功:
返回1失败:
返回0
*/
publiclongpexpireAt(Stringkey,longmillisecondsTimestamp){
returnjedisCluster.pexpireAt(key,millisecondsTimestamp);
}
/**
*返回或保存给定列表、集合、有序集合key中经过排序的元素
*排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较
*@paramkey
*@return
*/
publicList
returnjedisCluster.sort(key);
}
/**
*以秒为单位,返回给定key的剩余生存时间(TTL,timetolive)
*@paramkey
*@returnkey不存在:
返回-2key存在但没有设置生存时间:
返回-1
*/
publiclongttl(Stringkey){
returnjedisCluster.ttl(key);
}
/**
*返回key所储存的值的类型
*@paramkey
*@returnnone(key不存在)string(字符串)list(列表)set(集合)zset(有序集)hash(哈希表)
*/
publicStringtype(Stringkey){
returnjedisCluster.type(key);
}
//String(字符串)
/**
*如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾
*如果key不存在,APPEND就简单地将给定key设为value,就像执行SETkeyvalue一样
*@paramkey
*@paramvalue
*@return追加value之后,key中字符串的长度
*/
publicLongappend(Stringkey,Stringvalue){
returnjedisCluster.append(key,value);
}
/**
*计算给定字符串中,被设置为1的比特位的数量
*@paramkey
*@return被设置为1的位的数量
*/
publicLongbitCount(Stringkey){
returnjedisCluster.bitcount(key);
}
/**
*通过指定额外的start或end参数,可以让计数只在特定的位上进行
*@paramkey
*@paramstart
*@paramend
*@return被设置为1的位的数量
*/
publicLongbitCount(Stringkey,Longstart,Longend){
returnjedisCluster.bitcount(key,start,end);
}
/**
*将key中储存的数字值减一
*如果key不存在,那么key的值会先被初始化为0,然后再执行DECR操作
*如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
*@paramkey
*@return执行DECR命令之后key的值
*/
publicLongdecr(Stringkey){
returnjedisCluster.decr(key);
}
/**
*将key所储存的值减去减量decrement
*如果key不存在,那么key的值会先被初始化为0,然后再执行DECRBY操作
*如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
*@paramkey
*@paraminteger
*@return减去decrement之后,key的值
*/
publicLongdecrBy(Stringkey,longinteger){
returnjedisCluster.decrBy(key,integer);
}
/**
*返回key所关联的字符串值
*如果key不存在那么返回特殊值nil
*假如key储存的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值
*@paramkey
*@return当key不存在时,返回nil,否则,返回key的值,如果key不是字符串类型,那么返回一个错误
*/
publicStringget(Stringkey){
returnjedisCluster.get(key);
}
/**
*对key所储存的字符串值,获取指定偏移量上的位(bit)
*当offset比字符串值的长度大,或者key不存在时,返回0
*@paramkey
*@paramoffset
*@return字符串值指定偏移量上的位(bit)
*/
publicBooleangetbit(Stringkey,Longoffset){
returnjedisCluster.getbit(key,offset);
}
/**
*返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定(包括start和end在内)
*负数偏移量表示从字符串最后开始计数,-1表示最后一个字符,-2表示倒数第二个,以此类推。
*@paramkey
*@paramstartOffset
*@paramendOffset
*@return截取得出的子字符串
*/
publicStringgetrange(Stringkey,longstartOffset,longendOffset){
returnjedisCluster.getrange(key,startOffset,endOffset);
}
/**
*将给定key的值设为value,并返回key的旧值(oldvalue)
*当key存在但不是字符串类型时,返回一个错误
*@paramkey
*@paramvalue
*@return返回给定key的旧值,当key没有旧值时,也即是,key不存在时,返回nil
*/
publicStringgetSet(Stringkey,Stringvalue){
returnjedisCluster.getSet(key,value);
}
/**
*将key中储存的数字值增一
*如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作
*如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
*@paramkey
*@return执行INCR命令之后key的值
*/
publicLongincr(Stringkey){
returnjedisCluster.incr(key);
}
/**
*将key所储存的值加上增量increment
*如果key不存在,那么key的值会先被初始化为0,然后再执行INCRBY命令
*如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
*@paramkey
*@paraminteger
*@return加上increment之后,key的值
*/
publicLongincrBy(Stringkey,longinteger){
returnjedisCluster.incrBy(key,integer);
}
/**
*为key中所储存的值加上浮点数增量increment
*如果key不存在,那么INCRBYFLOAT会先将key的值设为0,再执行加法操作
*如果命令执行成功,那么key的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者
*@paramkey
*@paramvalue
*@return执行命令之后key的值
*/
publicdoubleincrByFloat(Stringkey,doublevalue){
returnjedisCluster.incrByFloat(key,value);
}
/**
*将字符串值value关联到key
*如果key已经持有其他值,SET就覆写旧值,无视类型
*@paramkey
*@paramvalue
*@return返回ok
*/
publicStringset(Stringkey,Stringvalue){
returnjedisCluster.set(key,value);
}
/**
*对key所储存的字符串值,设置或清除指定偏移量上的位(bit)
*位的设置或清除取决于value参数,可以是0也可以是1
*当key不存在时,自动生成一个新的字符串值
*@paramkey
*@paramoffset
*@paramvalue
*@return指定偏移量原来储存的位
*/
publicBooleansetbit(Stringkey,Longoffset,Stringvalue){
returnjedisCluster.setbit(key,offset,value);
}
/**
*对key所储存的字符串值,设置或清除指定偏移量上的位(bit)
*位的设置或清除取决于value参数,可以是0也可以是1
*当key不存在时,自动生成一个新的字符串值
*@paramkey
*@paramoffset
*@paramvalue
*@return指定偏移量原来储存的位
*/
publicBooleansetbit(Stringkey,longoffset,Booleanvalue){
returnjedisCluster.setbit(key,offset,value);
}
/**
*将值value关联到key,并将key的生存时间设为seconds(以秒为单位)
*如果key已经存在,SETEX命令将覆写旧值
*@paramkey
*@paramseconds
*@paramvalue
*@return设置成功时返回OK,当seconds参数不合法时,返回一个错误
*/
publicStringsetex(Stringkey,intseconds,Stringvalue){
returnjedisCluster.setex(key,seconds,value);
}
/**
*将key的值设为value,当且仅当key不存在
*若给定的key已经存在,则SETNX不做任何动作
*@paramkey
*@paramvalue
*@return设置成功,返回1,设置失败,返回0
*/
publicLongsetnx(Stringkey,Stringvalue){
returnjedisCluster.setnx(key,value);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Spark 机器 学习 资料 63 后台 服务 工具 redis 详解 操作 命令