Redis 基本操作

参考:An introduction to Redis data types and abstractions
中文翻译:看云

Redis命令查询:Command Reference - Redis

Strings

# set and get
set     key     value                   # set value
get     key# multiple operation
mset    key1  value1  [key2 value2...]  # multiple set
mget    key1  [key2...]                 # multiple get# string operation
getrange    key     start   end         # get sub string
setrange    key     offset  value       # rewrite from specific offset
strlen      key                         # get string length
append      key     value               # append value to existing value(returns added value length)# bit operation
setbit      key     offset  value       # set bit value by offset
getbit      key     offset              # get bit value by offset# expires
setex       key     expire              # create a key with expire
set         key     ex      expire      # creat a key with expire
psetex      key     expire              # expires after milie-seconds# if exists
setex       key     value               # set if exists
setnx       key     value               # set if not exits(returns 1 on success, 0 on failed)
set         key     value     nx        # set if not exits(return OK on success, (nil) on failed)# change self
incr        key                         # increment on value
incrby      key     increment           # increment on value by increment
incrbyfloat key     increment           # increment on value by float increment
decr        key                         # same
decrby      key     decrement           # same
getset                                  # get set(can be used to count without omit)

Lists

#other
llen    key                             # list length# push
lpush   key     ele1    [ele2 ...]      # push to the left(one by one)
rpush   key     ele1    [ele2 ...]      # push to the right(one by one)
lpushx  key     value                   # push if exists
rpushx  key     value                   # push if exists# pop(get and remove)
rpop    mylist                          # pop one from the right, return null if empty
lpop    mylist                          # same# get
lindex  index                           # get value by index
lrange  key     start     end           # get element[a, b], [-2,-1] # remove
lrem    key     value     count         # default 0 remove all, <0 remove from tail# Block pop (如果有多个client在wait, 先wait的client先被服务.)
brpop   key1   [key2 ...]    timeout    # block until new element(0 wait forever)
blpop   key1   [key2 ....]   timeout    # block until new element(0 wait forever)# pop and push
rpoplpush   source  desti               # rpop from source, lpsuh to desti
brpoplpush  source  desti               # same but blocking# slice
ltrim   key     start   end             # only keep elements in [start, end]

List的常用案例:

  • 记忆用户最近的更新。
  • 进程间通信。使用生产者消费者模型。

rpoplpush/brpoplpush用法:

  • Reliable queue (消费者取得数据后可能因为某种原因未完成)
  • Circular list(sour和desti相同, 逐个遍历列表而非使用lrange一次取出所有元素, 在有多个client同时遍历,或者在遍历过程中加入新的元素时,都能依次遍历,此外,由于原子性操作,不会在丢失过程中丢失数据)

Hashes

# set
hset    key   filed    value                        # hash set
hmset   key   filed1   value1 [field2 value2 ...]   # hash multiple set
hsetnx  key   field     value                       # set field if the filed not exists# delete
hdel    key     filed1     [field2 ...]     # delete multiple fields from hash# other
hlen    key                                 # get the # of fields
hscan   key     cursor [pattern] [count]    # similar to scan, but in hashes
hstrlen key     filed                       # get length of value of field
hexists key     filed                       # check existance# get
hget    key     filed                       # get one filed
hmget   key     filed1   [filed2 ...]       # get multiple field
hgetall key                                 # get all fields with values
hkeys   key                                 # get all fields
hvals   key                                 # get all values# change value
hincrby         key     filed   increment   # hash increment
hincrebyfloat   key     field   increment   # hash increment by float

Note:

  • 尽管hash非常适合用于表示对象,但我们也可以将hash用在别的地方(因为hash里面的内容是没有限制的)
  • 小哈希(例如,一些拥有小值的元素)在内存中以特殊的方式编码存储,以让内存存储变得更有效

Redis Sets

# get size (or cardinality 基数、集合的势)
scard   key# add
sadd    key     value1   [value2  ...]  # add multple values to set# get
smembers    key                         # get all elements of set
srandmember key                         # randomly get one member# check existance
sismenber   key     value               # check existence# pop
spop        key                         # **randomly** pop one element# UNION
sunionstore res     key1   [key2 ...]   # get union of sets and store result

Redis Sorted sets

# add
zadd  key  score1  mem1  [score2  mem2]         # add multiple elements# get by rank
zrange      key   start   end  [withscores]     # get a range of elements
zrerange    key   start   end  [withscores]     # reverse order# operate on ranges
zrangebysore        key    min    max           # get all between min and max
zremrangebyscore    key    min   max            # remove all between min and max# get rank
zrank       key     value                       # get rank
zrerank     key     value                       # reverse order# lexicographical scores(字典序操作)
(可以用于自动完成)
zrangebylex
zrevrangebylex
zremrangebylex
zlexcount

Note: 重复调用zadd可以更新元素的score(可用于游戏排行榜)

Bitmaps

# operations
setbit  key     offset    val                   # set bit
getbit  key     offset                          # get bit
bitop   [and/or/xor/not]  dest  key1 [key2...]  # bit operate and store to dest
bitcount
bitpos  key    [start  end]                     # find the first bit of 0 or 1

可用于记录网站用户每日访问情况。

HyperLogLogs

一种类似set的数据结构,用于估计set的大小(更快地)。

对Key自身的操作(无关乎数据和数据类类型)

type        key         # get key type
del         key         # delete key
exists      key         # check existance
expire      key         # set an expire for a key
pexpire     key         # set an expire in millis for a key
persist     key         # remove expire for a key
ttl         key         # time to live
pttl        key         # time to live in milliseconds

遍历keys

keys                    # 一次返回所有的key(当keys特别多时应采用scan)
scan                    # 逐个遍历key (可以模糊匹配)

转载于:https://www.cnblogs.com/fondoger/p/redis-basic-usage.html

Redis 基本操作相关推荐

  1. Redis基本操作——队列 List(原理篇)

    2019独角兽企业重金招聘Python工程师标准>>> Redis基本操作--List(原理篇) 学习过数据结构的同学,一定对链表(Linked List)十分的熟悉.相信我们自己也 ...

  2. Redis基本操作进阶篇学习--排序

    Redis基本操作进阶篇学习--排序 有序集合 SORT命令 常用参数介绍 针对数字元素进行排序 针对非数字元素排序 按范围获取排序结果 基于参考键进行排序 保存排序结果 注意事项 有序集合 Redi ...

  3. redis入门(一):redis基本操作

    redis已经成为了主流的内存数据库,如果你正在寻找可靠的内存数据库的话,redis是一个很不错的选择. 如果你之前有接触过内存数据就会了解大部分的内存数据库都是以key-value的形式存在的,一个 ...

  4. redis基本操作和在springboot中的使用

    本文介绍redis的使用 redis启动步骤 说明 redis自增自减相关操作 redis string set操作 get操作 其他操作 redis hash set操作 get操作 其他操作 re ...

  5. Redis 基本操作一

    操作相关的命令连接 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsave:返回上次成功将数据 ...

  6. Redis基本操作练习

    概述 auth password 127.0.0.1:6380> help authAUTH passwordsummary: Authenticate to the serversince: ...

  7. redis基本操作与Java连接

    基本信息与操作 redis支持5种基本数据类型:字符串.哈希表.有序列表.无序集合和有序集合. 字符串 最典型的数据结构,以KV方式存储: > set iamkey iamvalue > ...

  8. memcached redis基本操作

    memcached 安装与连接 使用docker进行启动:docker run -p 11211:11211 -d --name memcached memcached 使用telnet 进行连接:t ...

  9. Redis基本操作python篇

    Redis 关系型数据库(sql): MySQL, Oracle, SQLite, SQL Server, ... 非关系型数据库(nosql: not only sql 不仅仅是SQL): Redi ...

最新文章

  1. csv格式用什么打开可以编辑_如何用EXCEL/WPS整理航信版(金税盘/白盘)客户(商品)编码表...
  2. 周立功-成功心法(2):通过讲故事营销自己
  3. oracle 数据库日常巡检:数据库基本状况、oracle资源使用、数据备份结果、性能、cpu等、数据安全、归档日志、会话、SGA/PGA使用情况
  4. 服务器版的mysql怎么装_WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)...
  5. 介绍一个基于 .NET 的船的新 PHP SDK + Runtime: PeachPie
  6. python 定时任务系统_Python定时任务,实现自动化的方法
  7. php中session总结,PHP5中Session总结(一)
  8. 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
  9. java.sql.SQLException: Access denied for user ‘root‘@‘hadoop001‘ (using password: YES)
  10. .net5 不支持winform_.NET 5.0 RC 2 发布,正式版将在11月.NET Conf大会上发布
  11. 问题六十:怎么用ray tracing画回旋体(rotational sweeping / revolution)
  12. 教程-脚本之Python
  13. 解决github访问慢
  14. MySQL数据类型详解
  15. 玉柴spn码故障对照表_玉柴共轨电喷发动机故障码一览表
  16. 计算机网络:第四章 网络层
  17. 牛逼!这个C++跳棋游戏居然可以让你边玩游戏边学编程!
  18. 日期组装 (如:2020年1月1日、二〇二〇年一月一日、1/1/2020)
  19. 计算机连接网络被限制,电脑本地连接受限制或无连接怎么办?
  20. java处理excel,将xlsx转xls

热门文章

  1. 停车管理系统汽车到达汽车离去c语言,停车场管理系统 C语言实现
  2. Jenkins的入门(一)安装
  3. 支持向量机的近邻理解:图像二分类为例(1)
  4. vue学习笔记(1)-组件通信
  5. SSM框架下log4j的配置和使用
  6. python3.6入门到高阶(全栈) day015 初识面向对象
  7. 为什么又要造一个叫 Latke 的轮子
  8. VS11在Win8上的Metro应用
  9. 阿里对大年龄清退的定义
  10. 绘制课本中的根轨迹图与零极点分布图