redis五种数据类型与jedis操作

使用jedis链接redis可以使用redis的jar包

如果使用maven可以再pom.xml中加入如下配置

<dependency>

            <groupId>redis.clients</groupId>

            <artifactId>jedis</artifactId>

            <version>2.9.0</version>

    </dependency>

也可以直接使用jedis-2.9.0.jar 


接着是链接



我们也可以使用redis的线程池 具体配置如下:

JedisPoolConfig config = newJedisPoolConfig();

//连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true

config.setBlockWhenExhausted(true);

//设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)

config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");

//是否启用pool的jmx管理功能, 默认true

config.setJmxEnabled(true);

//MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默 认为"pool", JMX不熟,具体不知道是干啥的...默认就好.

config.setJmxNamePrefix("pool");

//是否启用后进先出, 默认true

config.setLifo(true);

//最大空闲连接数, 默认8个

config.setMaxIdle(8);

//最大连接数, 默认8个

config.setMaxTotal(8);

//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1

config.setMaxWaitMillis(-1);

//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)

config.setMinEvictableIdleTimeMillis(1800000);

//最小空闲连接数, 默认0

config.setMinIdle(0);

//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3

config.setNumTestsPerEvictionRun(3);

//对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断  (默认逐出策略)   

config.setSoftMinEvictableIdleTimeMillis(1800000);

//在获取连接的时候检查有效性, 默认false

config.setTestOnBorrow(false);

//在空闲时检查有效性, 默认false

config.setTestWhileIdle(false);

//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

config.setTimeBetweenEvictionRunsMillis(-1);


redis是以键值对 key-value的形式进行存储

对于key与value的操作为

设置一个 key 的过期时间(单位:秒):

expire name 10     

查看剩余时间 :

ttl name

移除给定 key 的过期时间:

persist  name

将当前数据库中的 key 转移到其它数据库中:

move name 1

返回值的类型:

type  name

选择数据库:

select

返回当前数据库中 key 的数目:

dbsize

 监视--实时转储收到的请求:

monitor

删除当前选择数据库中的所有key:

flushdb

删除所有数据库中的所有key:

flashall

redis中五种数据类型分别为:

字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)

一:字符串类型string

字符串类型是Redis的最基本类型,它可以存储任何形式的字符串。其它的四种类型都是字符串类型的不同形式。

最基本的命令:GET、SET         语法:GET key,SET key value   value如果有空格需要双引号以示区分

整数递增:INCR                      语法:INCR key    默认值为0,所以首先执行命令得到 1 ,不是整型提示错误

增加指定的整数:INCRBY          语法:INCRBY key increment

整数递减:DECR                     语法:DECR key   默认值为0,所以首先执行命令得到 -1,不是整型提示错误

减少指定的整数:DECRBY         语法:DECRBY key increment

增加指定浮点数:INCRBYFLOAT 语法:INCRBYFLOAT key increment  与INCR命令类似,只不过可以递增一个双精度浮点数

向尾部追加值:APPEND             语法:APPEND key value   redis客户端并不是输出追加后的字符串,而是输出字符串总长度

获取字符串长度:STRLEN          语法:STRLEN key  如果键不存在返回0,注意如果有中文时,一个中文长度是3,redis是使用UTF-8编码中文的

获取多个键值:MGET                语法:MGET key [key ...]  例如:MGET key1 key2 

设置多个键值:MSET                语法:MSET key value [key value ...]  例如:MSET key1 1 key2 "hello redis"

二进制指定位置值:GETBIT        语法:GETBIT key offset   例如:GETBIT key1 2 ,key1为hello 返回 1,返回的值只有0或1,

                   当key不存在或超出实际长度时为0

设置二进制位置值:SETBIT       语法:SETBIT key offset value ,返回该位置的旧值

二进制是1的个数:BITCOUNT    语法:BITCOUNT key [start end] ,start 、end为开始和结束字节

位运算:BITOP                       语法:BITOP operation destkey key [key ...]  ,operation支持AND、OR、XOR、NOT

偏移:BITPOS                        语法:BITPOS key bit [start] [end]


二:散列类型hash

设置单个:HSET                      语法:HSET key field value,不存在时返回1,存在时返回0,没有更新和插入之分

设置多个:HMSET                    语法:HMSET key field value [field value ...]

读取单个:HGET                      语法:HGET key field,不存在是返回nil

读取多个:HMGET                    语法:HMGET key field [field ...]

读取全部:HGETALL                 语法:HGETALL key,返回时字段和字段值的列表

判断字段是否存在:HEXISTS      语法:HEXISTS key field,存在返回1 ,不存在返回0

字段不存在时赋值:HSETNX       语法:HSETNX key field value,与hset命令不同,hsetnx是键不存在时设置值

增加数字:HINCRBY                 语法:HINCRBY key field increment ,返回增加后的数,不是整数时会提示错误

删除字段:HDEL                      语法:HDEL key field [field ...] ,返回被删除字段的个数

只获取字段名:HKEYS               语法:HKEYS key ,返回键的所有字段名

只获取字段值:HVALS              语法:HVALS key  ,返回键的所有字段值

字段数量:HLEN                      语法:HLEN key ,返回字段总数


三:列表类型(list)

内部使用双向链表实现,所以获取越接近两端的元素速度越快,但通过索引访问时会比较慢

添加左边元素:LPUSH               语法:LPUSH key value [value ...]  ,返回添加后的列表元素的总个数

添加右边元素:RPUSH              语法:RPUSH key value [value ...]  ,返回添加后的列表元素的总个数

移除左边第一个元素:LPOP        语法:LPOP key  ,返回被移除的元素值

移除右边第一个元素:RPOP        语法:RPOP key ,返回被移除的元素值 

列表元素个数:LLEN                语法:LLEN key, 不存在时返回0,redis是直接读取现成的值,并不是统计个数

获取列表片段:LRANGE           语法:LRANGE key start stop,如果start比stop靠后时返回空列表,0 -1 返回整个列表

                                                    正数时:start 开始索引值,stop结束索引值(索引从0开始)

                                                    负数时:例如 lrange num -2 -1,-2表示最右边第二个,-1表示最右边第一个,

删除指定值:LREM                  语法:LREM key count value,返回被删除的个数

                                                   count>0,从左边开始删除前count个值为value的元素

                                                   count<0,从右边开始删除前|count|个值为value的元素

                                                   count=0,删除所有值为value的元素

索引元素值:LINDEX               语法:LINDEX key index ,返回索引的元素值,-1表示从最右边的第一位

设置元素值:LSET                  语法:LSET key index value

保留列表片段:LTRIM              语法:LTRIM key start stop,start、top 参考lrange命令

一个列表转移另一个列表:RPOPLPUSH      语法:RPOPLPUSH source desctination ,从source列表转移到desctination列表,

                                                                 该命令分两步看,首先source列表RPOP右移除,再desctination列表LPUSH



四:集合类型(set)

集合类型值具有唯一性,常用操作是向集合添加、删除、判断某个值是否存在,集合内部是使用值为空的散列表实现的。

添加元素:SADD                    语法:SADD key member [member ...] ,向一个集合添加一个或多个元素,因为集合的唯一性,所以添加相同值时会被忽略。

                        返回成功添加元素的数量。

删除元素:SREM                    语法:SREM key member [member ...] 删除集合中一个或多个元素,返回成功删除的个数。

获取全部元素:SMEMBERS      语法:SMEMBERS key ,返回集合全部元素

值是否存在:SISMEMBER        语法:SISMEMBER key member ,如果存在返回1,不存在返回0

差运算:SDIFF                      语法:SDIFF key [key ...] ,例如:集合A和集合B,差集表示A-B,在A里有的元素B里没有,返回差集合;多个集合(A-B)-C

交运算:SINTER                语法:SINTER key [key ...],返回交集集合,每个集合都有的元素

并运算:SUNION        语法:SUNION key [key ...],返回并集集合,所有集合的元素

集合元素个数:SCARD           语法:SCARD key ,返回集合元素个数

集合运算后存储结果                语法:SDIFFSTROE destination key [key ...] ,差运算并存储到destination新集合中

                   SINTERSTROE destination key [key ...],交运算并存储到destination新集合中

                                                  SUNIONSTROE destination key [key ...],并运算并存储到destination新集合中

随机获取元素:SRANDMEMGER 语法:SRANDMEMBER key [count],根据count不同有不同结果,count大于元素总数时返回全部元素

                  count>0 ,返回集合中count不重复的元素

                  count<0,返回集合中count的绝对值个元素,但元素可能会重复

弹出元素:SPOP                     语法:SPOP key [count] ,因为集合是无序的,所以spop会随机弹出一个元素



五:有序集合类型

添加集合元素:ZADD              语法:ZADD key [NX|XX] [CH] [INCR] score member [score member ...],不存在添加,存在更新。

获取元素分数:ZSCORE          语法:ZSCORE key member ,返回元素成员的score 分数

元素小到大:ZRANGE             语法:ZRANGE key start top [WITHSCORES] ,参考LRANGE ,加上withscores 返回带元素,即元素,分数

                                                  当分数一样时,按元素排序

元素大到小:ZREVRANGE       语法:ZREVRANGE key start [WITHSCORES] ,与zrange区别在于zrevrange是从大到小排序

指定分数范围元素:ZRANGEBYSCORE   语法:ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offest count]

                返回从小到大的在min和max之间的元素,( 符号表示不包含,例如:80-100,(80 100,

                  withscore返回带分数

                  limit offest count 向左偏移offest个元素,并获取前count个元素

指定分数范围元素:ZREVRANGESCORE   语法:ZREVRANGEBYSCORE key max  min [WITHSCORE] [LIMIT offest count]

                与zrangebyscore类似,只不过该命令是从大到小排序的。

增加分数:ZINCRBY                语法:ZINCRBY key increment member ,注意是增加分数,返回增加后的分数;如果成员不存在,则添加一个为0的成员。



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 本文主要介绍 Redis 常用的基本操作命令和数据类型操作命令,也就是 Redis 的基本使用。通过学习本文,应该...
    江城子Leon阅读 539评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • Redis从入门到精通:中级篇 本文目录 上一篇文章以认识Redis为主,写了Redis系列的第一篇,现在开启第二...
    叨唧唧的阅读 668评论 0 0
  • 建安三年(公元198年) 曹操联合刘备,攻打吕布。 吕布虽然勇猛但是也抵挡不住这二人,最后被围在下邳城。 曹操这次...
    吕院长阅读 1,554评论 10 7
  • 作者:赵大伟 (绿围巾女孩整理) 引言 互联网思维制胜传统企业转型 第一节 传统企业互联网化 是未来商业浪潮的主旋...
    茜茜的绿围巾阅读 2,950评论 0 8