redis学习之redis基本数据类型以及Jedis

前言:

redis有5种基本数据类型,分别是String(字符串)Hash(字典)List(列表)Set(集合)Zset(有序集合),下面就分别来说一下这五种数据类型。


欢迎大家关注我的公众号 javawebkf,目前正在慢慢地将简书文章搬到公众号,以后简书和公众号文章将同步更新,且简书上的付费文章在公众号上将免费。


数据类型详解:

1、String:

二进制安全的数据类型,类似于Java中的Map,以key、value的形式存储数据。它有如下方法:
①、set和get方法:赋值和获取值
语法:
set key value
get key
例子:
set username tom
get username

②、del方法:删除指定的key
语法:
del key
例子:
del username

③、setnx方法:key不存在时进行设置,如果已有这个key就返回0
语法:
setnx key value
例子:
setnx age 22
如果有age这个key,就返回0,没有就进行设置

④、setex方法:设置有效期
语法:
setex key 有效期 value
例子:
setex color 10 red
设置color的有效期为10秒,10秒后color为nil

⑤、setrange方法:替换字符串
语法:
set key 从第几位开始替换 要替换的字符
例子:
set email 12356789@qq.com setrange email 9 gg
把qq替换成gg

⑥、mset和mget方法:一次设置或获取多个值
语法:
mset key1 value1 key2 value2
mget key1 key2

⑦、incr和decr方法:对某个值进行递增或递减
语法:
incr key
decr key

⑧、incrby和decrby方法:可以设置步长的递增和递减
语法:
incrby key 步长
decrby key 步长

⑨、append方法:追加字符串
语法:
append key 追加的内容

⑩、strlen方法:获取字符串长度
语法:
strlen key

2、Hash:

占用内存更少,方便存储对象。它有如下方法:
①、hset和hget方法:
语法:
官方:hset key field value
自己理解:hset hashname key value
hget hashname key

②、hmset和hmget:批量操作
语法: hmset hashname key1 value1 key2 value2
hmget hashname key1 key2

③、hincrby和hdecrby:集合递增和递减
语法:
hincrby hashname key 步长
hdecrby name key 步长

④、hexists:是否存在key,存在就返回1,不存在返回0
语法:
hexists hashname key

⑤、hlen:返回集合中键的个数
语法:
hlen hashname

⑥、hdel:删除指定的key
语法:
hdel hashname key

⑦、hvals:返回指定hash里的所有value
语法:
hvals hashname

⑧、hgetall:返回hash里所有的key、value
语法:
hgetall hashname

3、List:

链表结构的集合,既可以做栈也可以做队列,它有如下方法:
①、lpush方法:从头部加入元素(栈),先进后出
语法:
lpush key value
例子:
lpush list1 "hello"
lpush list1 "world"

②、lrange方法:取出list中的元素,从start取到end
语法:
lrange key start end
例子:
lrange list1 0 -1
表示从头取到尾

③、rpush方法:从尾部加入元素(队列),先进先出
语法:
rpush key value
例子:
rpush list1 "hello"

④、linsert方法:插入元素
语法:
linsert key before value1 insertvalue
例子:
linsert list1 before "world" "hello"
表示在world前插入一个hello

⑤、lset方法:将指定下标的元素换掉
语法:
lset key 下标 "替换的内容"
例子:
lset list1 0 "haha"
表示把索引为0的元素替换成haha

⑥、lrem方法:删除若干个元素,返回删除的个数
语法:
lrem key 删除的个数 "删除的元素"
例子:
lrem list1 2 "b"
删除两个b

⑦、ltrim方法:保留指定索引范围内的值
语法:
ltrim key 索引1 索引2
例子:
ltrim list1 2 4
表示保留索引2到4的内容

⑧、lpop方法:从list头部删除元素,并返回删除元素
语法:
lpop key

⑨、rpop方法:从list尾部删除元素,并返回删除元素
语法:
rpop key

⑩、rpoplpush方法:删除key1中最后一个元素,然后把这个元素加到key2的第一个位置(key1和key2可以相同)
语法:
rpoplpush key1 key2

①①、lindex方法:返回list中指定索引的值
语法:
lindex key 索引
例子:
lindex list1 1
返回list1中第二个元素

①②llen方法:返回list中元素个数
语法:
llen key

4、Set:

无序不重复集合,通过hashtable实现。有如下方法:
①、sadd方法:添加元素
语法:
官方:sadd key member
自己理解:sadd setname value
例子:
sadd set1 haha

②、srem方法:删除set的元素
语法:
srem setname value
例子:
srem set1 haha

③、spop方法:指定一个set,随机删除其里面的元素并返回
语法:
spop setname
例子:
spop set1

④、sdiff方法:返回set1不同于set2的元素
语法:
sdiff setname1 setname2

⑤、sdiffstore方法:将set1不同于set2的元素存到set3中去
语法:
```sdiffstore setname1 setname2 setname3``‘

⑥、sinter方法:求set1和set2的交集
语法:
sinter setname1 setname2

⑦、sinterstore方法:把set1与set2的交集存到set3中
语法:
sinter setname1 setname2 setname3

⑧、sunIon方法:求set1与set2的并集(I是大写的i)
语法:
sunIon setname1 setname2

⑨、sunIonstore方法:把set1与set2的并集存入set3
语法:
sunIonstore setname1 setname2 setname3

⑩、smove方法:将set1中的某个元素移动到set2中
语法:
smove setname1 setname2 value
例子:
smove set1 set2 ee
表示将set1中的ee移动到set2中

①①、scard方法:查看set里的元素个数
语法:
scard setname

①②、sismember方法:判断某个元素是否为set中元素,是返回1,不是返回0
语法:
sismember setname value
例子:
sismember set1 haha
判断haha是不是set1中的元素

①③、srandmember方法:随机返回set中count个元素
语法:
srandmember setname count
例子:
srandmember set1 3
随机返回set1中3个元素

5、Zset:

和set的区别就是,Zset是有序的。它有如下方法:
①、zadd方法:添加元素,如果元素存在,就更新该元素顺序
语法:
zadd zsetname score value
例子:
zadd zset1 1 haha
表示添加haha这个元素,分数是1

②、zrem方法:删除zset中的元素
语法:
zrem zsetname value
例子:
zrem zset1 haha

③、zincrby和zdecrby方法:指定步长递增或递减
**语法: **
zincrby zsetname 步长 value
zdecrby zsetname 步长 value

④、zrank方法:返回某个元素的排序索引(从小到大排序)
语法:
zrank zsetname value
例子:
zrank zset1 haha
返回haha在zset1中的序号

⑤、zrevrank方法:返回排序索引(从大到小)
语法:
zrevrank zsetname value

⑥、zrangebyscore方法:查找分数在指定区间的数据并返回
语法:
zrangebyscore zsetname score1 score2 withscores
例子:
zrangebyscore zset1 1 4 withscores
返回分数在1到4之间的数据

⑦、zcard方法:返回zset中元素的个数
语法:
zcard zsetname

⑧、zcount方法:返回zset中指定分数区间中元素的个数
语法:
zcount zsetname score1 score2

⑧、zremrangebyrank:根据给定的索引区间删除数据
语法:
zremrangebyrank zsetname index1 index2

⑨、zremrangebyscore:根据给定的分数区间删除元素
语法:
zremrangebyscore zsetname score1 score2

Jedis

Jedis就是Java操作redis的一套API,所有方法都和上面介绍的数据类型方法一样,只需要new一个Jedis实例,传入redis所在的机器的ip以及redis服务的端口,然后用这个实例调方法即可。

总结:

redis有以上5大数据类型,每个类型都有若干的方法,学习时可以类比Java的集合进行学习。

以上内容属于个人学习笔记整理,如果错误,欢迎批评指正!

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