目录

  • 一.String数据类型
    • 1.set,get
    • 2.append
    • 3.incr,decr,incrby,decrby
    • 4.strlen
    • 5.setex
    • 6.getset
    • 7.setnx
    • 8.mset,mget,msetnx
  • 二.List数据类型
    • 1.lpush,lpushx,lrange
    • 2.lpop,llen
    • 3.lrem,lset,lindex,ltrim
    • 4.linsert
    • 5.rpush,rpushx
    • 6.rpop,rpoplpush
  • 三.Hash数据类型
    • 1.hset,hget,hdel,hexists,hlen,hsetnx
    • 2.hmset,hmget,hgetall,hkeys,hvals
    • 3.hincrby
  • 四.set数据类型(无序集合)
    • 1.sadd,smembers,scard,sismember
    • 2.spop,srem,srandmember,smove
  • 五.Sorted Set数据类型(有序集合)
    • 1.zadd,zcard,zcount,zrem,zincrby,zscore,zrank
    • 2.zrevrange,zrevrangebyscore,zrevrank
    • 3.zrangebyscore,zremrangebyrank,zremrrangebyscore
  • 总结

一.String数据类型

概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

1.set,get

SET #创建键,命令格式为 set key    value
GET #获取数据,命令格式为 get key
例:
set text hello
get text
set text 'hello world!'
get text

2.append

append   #Redis的append命令是往一个key追加value。如果没有key,则创建一个并且设置value
例:
redis-cli
exists mark
append mark zs
append mark ' 98'
get color

3.incr,decr,incrby,decrby

incr     #该Key的值递增1
decr    #该Key的值递减1
incrby  #增加指定的整数
decrby  #减少指定的整数
例:
set num 10
incr num
decr num
incrby num 10
decrby num 10
get num
del num
keys *
incr num
keys *set num hello
get num
incr num

4.strlen

strlen   #获取指定Key的字符长度
例:
strlen text

5.setex

setex   #设置指定Key的过期时间为xx秒
ttl key #查看键的剩余存活时间
例:
setex num 10 hello
ttl num
get num
等待20s
get num
ttl num
set num hello
ttl num

6.getset

getset  #获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成
例:
get num
incr num
getset num 0
get num

7.setnx

setnx  #创建指定键,若该键存在则不执行,不存在则执行
例:
del text
setnx text hello
setnx text world
get text

8.mset,mget,msetnx

mset     #批量设置键的值
mget        #批量获取键的值
msetnx      #批量设置键值,若有存在的键则不执行
例:
mset k1 1 k2 2
mget k1 k2
msetnx k2 3 k4 4
keys k*
msetnx k3 3 k4 4
keys k*

二.List数据类型

概述:
列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

1.lpush,lpushx,lrange

lpush    #该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入到表头
lpushx  #该命令仅当key存在时,将value值插入表头
lrange  #返回列表中指定区间内的元素,0表示第一个元素,1表示第二个元素
例:
lpush num a b c d
lrange num 0 -1
lpushx num e
lpushx num e
lrange num 0 -1

2.lpop,llen

lpop     #移除并返回第一个元素,从头开始
llen        #查看列表中元素个数

3.lrem,lset,lindex,ltrim

lrem     #从头部(left)向尾部(right)变量链表,删除2个值等于a的元素,返回值为实际删除的数量
lset        #将索引值为xxx的元素值设置为新值xxx
lindex      #获取索引值为xxx的元素值。
ltrim       #仅保留索引值xxx到xxx的元素
例:
del num
lpush num a b c b b a
lrange num 0 -1
lrem num 2 b
lrange num 0 -1lset num 1 x
lrange num 0 -1lindex num 3
ltrim num 0 2
lrange num 0 -1

4.linsert

linsert      #在键的xxx元素前|后插入新元素元素
例:
del num
lpush num a b c
lrange num 0 -1
linsert num before a x
linsert num after c y
lrange num 0 -1

5.rpush,rpushx

rpush        #将值从左往右依次插入到表尾
rpushx      #指定键存在时执行,否则不执行
例:
rpush key a b c
lrange key 0 -1rpushx key x
lrange key 0 -1

6.rpop,rpoplpush

rpop         #移除并返回键的第一个元素,从尾开始
rpoplpush       #将键1尾部元素xxx弹出,同时再插入到键2的头部(原子性的完成这两步操作)
例:
rpop key
lrange key 0 -1
rpoplpush key key1
keys key?
lrange key1 0 -1lrange key1 0 -1
rpoplpush key key
lrange key 0 -1

三.Hash数据类型

概述:
hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。 如:存储 ID 为 2 的汽车对象。
如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

1.hset,hget,hdel,hexists,hlen,hsetnx

hset         #给xxx键设置字段为xxx,值为xxx
hget            #获取xxx键,字段为xxx的值
hdel            #删除xxx键的xxx字段,成功返回1
hexists         #判断xxx键中的xxx字段是否存在,存在返回1
hlen            #获取xxx键的字段数量
hsetnx          #给xxx键添加新字段,是否执行基于此字段是否存在,不管键是否存在,返回1表示执行成功
例:
hset hash tex1 a tex2 b tex3 c
hget hash tex1
hdel hash tex2hexists hash tex2
hlen hashhsetnx hash1 tex3 d
keys has*
hsetnx hash tex3 d

2.hmset,hmget,hgetall,hkeys,hvals

hmset        #批量为xxx键创建字段和赋值
hmget       #获取指定多个字段值
hgetall     #返回xxx键的所有字段及其值,是逐对列出的
hkeys       #仅获取xxx键中所有字段名
hvals       #仅获取xxx键中所有字段值
例:
hmset hash4 tex1 hello tex2 world
heget hash4 tex1 tex2
hmget hash4 tex1 tex2
hkeys hash4
hvals hash4

3.hincrby

hincrby      #给xxx键的xxx字段值加x
例:
hincrby hash3 tex1 50
hincrby hash3 tex1 -20
hincrby hash3 tex1 100

四.set数据类型(无序集合)

概述:无序集合,元素类型为String类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。

应用范围:
①可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
②Sorted-Set类型还可用于构建索引数据。

1.sadd,smembers,scard,sismember

sadd         #将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合
smembers        #通过smembers命令查看插入的结果,输出的顺序与插入顺序无关
scard           #获取集合中成员的数量
sismember       #判断键中xxx成员是否存在,返回0表示不存在,1表示存在
例:
sadd set a b c
smembers set
scard set
sismember set c
sismember set d

2.spop,srem,srandmember,smove

spop             #随机的移除并返回键中的某一成员
srem                #从键中移出xxx、xxx、xxx成员,并返回移出成员个数
srandmember         #该命令随机的返回某一成员
smove               #将键1的xxx成员移到键2,成功返回1,失败返回0
例:
del set
sadd set a b c dspop set
smembers set
srem set a b
smembers setsrandmember set
smove set set1 d
keys se*

五.Sorted Set数据类型(有序集合)

概述:
1、有序集合,元素类型为String,元素具有唯一性,不能重复。
2、每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。

应用范围:
1)可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
2)Sorted-Set类型还可用于构建索引数据。

1.zadd,zcard,zcount,zrem,zincrby,zscore,zrank

zadd         #将一个或多个成员元素及其分数值加入到有序集当中
zcard           #获取键中成员的数量
zcount          #分数满足表达式x <= score <= x的成员的数量
zrem            #删除成员xxx、xxx,返回实际删除成员的数量
zincrby         #成员xxx不存在,zincrby命令将添加该成员并假设其初始分数为0
zscore          #获取成员xxx的分数
zrank           #获取成员xxx的位置索引值
例:
zadd zset 1 a 2 b 3 czrange zset 0 -1
zrange zset 0 -1 withscoreszrank zset b
zcard zset
zcount zset 1 3
zrem zset a b
zcard zsetzincrby zset 2 a
zincrby zset -1 a

2.zrevrange,zrevrangebyscore,zrevrank

zrevrange                #以位置索引从高到低的方式获取并返回此区间内的成员
zrevrangebyscore        #获取分数满足表达式x >= score >= x 的成员,并以从高到底的顺序输出。
zrevrank                #获取成员索引
例:
del zset
zadd zset 1 a 2 b 3 c 4 d 5 e
zrange zset 0 -1
zrevrange zset 0 -1zrevrank zset a
zrank zset a
zrevrangebyscore zset 5 3
zrevrangebyscore zset 3 1 limit 1 2

3.zrangebyscore,zremrangebyrank,zremrrangebyscore

zrangebyscore        #获取分数满足表达式x <= score <= x的成员
zremrangebyrank     #删除位置索引满足表达式x <= rank <= x的成员。
zremrrangebyscore   #删除分数满足表达式x <= score <= x的成员,并返回实际删除的数量。
例:
del zset
zadd zset 1 a 2 b 3 c 4 d 5 e
zrangebyscore zset 2 4
zrangebyscore zset -inf +inf limit 2 3
zremrangebyscore zset 1 3
zrange zset 0 -1
zremrangebyrank zset 1 2
zrange zset 0 -1

总结

一.String数据类型

操作 含义
set 创建键和键值
append 追加键值,并返回追加后的长度(若键不存在,则相当于创建)
exists 判断该键是否存在,存在返回1,不存在返回0
get 获取键值
strlen 获取指定key的字符长度
incr 使该key值递增1
decr 使该key值递减1
incrby 使该key值增加指定的整数
decrby 使该key值减少指定的整数
getset 获取key值并返回,同时给key设置新值
setex 设置指定key的过期时间
setnx 不存在键时执行set操作,存在则不执行
mset 批量设置键值对
mget 批量获取键值
msetnx 批量设置键值对,不存在该键时执行set操作,存在则不执行

二.List数据类型

操作 含义
lpush 在左侧头部依次插入列表元素
lpushx 键必须存在才能执行,在头部插入元素值并返回列表元素数量
lrange 取从位置索引开始到位置索引结束的所有元素
lpop 移除并返回键的第一个元素
llen 获取表中元素数量
lrem 从头部开始删除n个值为x的元素,并返回实际删除数量
lset 将索引值为n的元素设置为新值
lindex 获取索引值为n的元素值
ltrim 保留索引值x到y之间的n个元素
lrange 列出链表中的全部元素
linsert 在某个元素的前面或后面插入新的元素
rpush 在列表的尾部一次插入新的值
rpushx key必须存在才可执行,将键值从尾部插入,并返回所有元素数量
rpop 在尾部移除一个元素,并返回该元素
rpoplpush 在key的尾部弹出一个元素并返回,将它插入另一个key的头部

三.Hash数据类型

操作 含义
hset 创建新的hash类型键值对
hget 获取键值
hdel 删除键值对
hexists 判断键是否存在字段名为xx的字段,存在返回1,不存在返回0
hlen 获取键的字段数量
hsetnx 不存在键时执行set操作,否则不执行
hincrby 给键的某一字段的值加指定整数,返回加后的结果
hgetall 返回键的所有字段及其值
hkeys 获取键中所有字段的名字
hvals 获取建中所有字段的值
hmset 一次性设置多个字段

四.Set数据类型(无序集合)

操作 含义
sadd 插入新的数据
smembers 查看插入的结果
scard 获取集合中元素的数量
sismember 判断集合中元素是否存在,存在返回1,不存在返回0
spop 随机的移除并返回set中的某一成员
srem 从键中移除成员,并返回移除的数量
srandmember 随机返回某一成员
smove 将成员从一个键移动到另一个键中

五.Sorted Set数据类型(有序集合)

操作 含义
zadd 插入新的数据
zcard 获取键中成员数量
zcount 分数满足x到y的成员数量,包括x和y
zrem 删除成员,并返回实际删除成员的数量
zincrby 将成员的值增加某一整数,并返回该成员更新后的分数
zscore 获取某一成员的分数,返回值为字符串形式
zrange 查看成员的分数
zrank 查看成员是否存在
zrangebyscore 获取分数x到y之间的成员
zremrangebyrank 删除位置索引满足x到y之间的成员(包括x和y),并返回实际删除的数量
zremrangebyscore 删除分数满足x到y之间的成员(包括x和y),并返回实际删除的数量
zrevrange 以位置索引从高到底的方式获取并返回此区间内的成员
zrevrangebyscore 获取分数x到y之间的成员,并以从高到底的顺序输出
zrevrank 以分数从高到底的方式获取并返回此区间内的成员

缓存加速------Redis的五种数据类型(String,List,Hash,Set,Sorted Set)相关推荐

  1. 【redis-02】redis的五种数据类型和对应的操作方法,补充RedisUtil模板

    [redis-02]redis的五种数据类型和对应的操作方法,补充RedisUtil模板 [一]redis的五种数据类型 [二]String:字符串常用命令 (1)String基本信息 (2)Stri ...

  2. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...

  3. Redis: Redis支持五种数据类型

    ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...

  4. 【Redis】五种数据类型

    五种数据类型 string类型 list类型 set类型 hash类型 sortset String 添加/修改数据 set key value 获取数据 get key 删除数据 del key 批 ...

  5. Redis的五种数据类型及应用场景

    1,数据类型 String(字符串,整数,浮点数):做简单的键值对缓存 List(列表):储存一些列表类型的数据结构 Set(无序集合):交集,并集,差集的操作 Hash(包含键值对的无序散列表):结 ...

  6. Redis系列六、redis的五种数据结构和相关指令之Sorted Set

    本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令.redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set ...

  7. 【Redis】五种数据类型及其使用场景

    Redis 数据类型 五种redis的类型与java的数据类型的类比 string --> String hash --> Hashmap list --> LinkList set ...

  8. redis的五种数据类型及常见操作

    目录: 说明 字符串(string) list(列表) hash(哈希) set(集合) zset(有序集合) 说明: redis中所有数据结构都以唯一的key字符串作为名称,然后通过这个唯一的key ...

  9. redis的五种数据类型

最新文章

  1. 《创新者》读书笔记 PB16110698 第五周(~4.5)
  2. (一)win7下cocos2d-x 21 + vs2010
  3. sega+model+3+android,世嘉MODEL2经典老游戏移植登场 追加联网对战
  4. 2017.2.12【初中部 GDKOI】模拟赛B组 T4:pot
  5. 深入update语句(延伸学习)
  6. 前端学习(1504):组件通信的几种情况
  7. 第二十一:基于Python2+Selenium3+Pytest4+Pytest-Html的UI自动化框架
  8. 创建CocoaPods的Framework Swift组件化之路(下)
  9. djangobook记录
  10. 【阿朱一帖看尽】2014年BAT到底干了些什么
  11. 堆空间释放后使用的异常
  12. 苹果ppt_ppt制作苹果版下载 1.3.0
  13. 三级等保要求配置文档-《物理环境》《网络通信》《区域边界》《计算环境》《管理中心》《管理制度》《运维管理》《硬件配置清单》
  14. 如何在线制作ico图标,自己动手丰衣足食
  15. shared_ptr中的owner_before解析(最易懂,最全面)
  16. python中encode和decode使用讲解与演示
  17. 906.nethogs安装使用
  18. 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)
  19. 博弈论第一章 完全信息静态博弈
  20. 查看dg主备库同步情况

热门文章

  1. java中的常见异常1 -- 新手上路,减速慢行
  2. 保存网页内容 自动过滤广告和网页头尾
  3. Python数据提取-lxml模块
  4. freemarker模板生成pdf文件
  5. 再见了青春,联想Y450最后一次升级,真的神一般存在。
  6. 如何用p5js做一个可爱的鲶鲶并添加不倒翁效果
  7. 论文阅读Check it again:Progressive Visual Question Answering via Visual Entailment
  8. ps打造人物光滑的肤色
  9. opencv生成棋盘格图像
  10. 【wpf】如果让Bingding 如何让后台数据强制更新界面