Redis Remote Dictionary Server 远程字典服务器
功能
缓存(当空间达到限制时,可以按照一定规则,淘汰部分数据)
队列(支持阻塞式读取)
订阅/发布(可以将其做出聊天室)

特点
内存存储
可以持久化
数据类型丰富
单线程
命令都是原子操作
命令简单

常用命令
keys pattern 获取符合规则的key列表
注:? 一个字符
* 0到多个字符
[] 方括号中的任意字符(‘-’表示范围)
exists key 该key是否存在(1存在,0不存在)
del key ... 删除一个或多个key(不支持通配符,但可以通过Linux命令来达到模式匹配的目的)
type key 获取key的类型

字符串操作 命名 “对象类型:ID:对象属性”
set key value (可以覆盖同名key 无论是什么类型)
get key
incr key(当value为整数时+1,并返回+1后的值;若不是整数error;没有该key时,默认原先值为0)
自增ID 设立一个key 命名为 “对象类型:count”
位操作 存储只有几种值得字段特别省空间

散列表 命名 “对象类型:ID” (解决hash冲突时用拉链法)
hset key field value (若field存在,即更新)(hsetnx field存在 不操作)
hget key field
hmset key field value [...]
hmget key field [...]
hgetall key
hincrby key field increment (能增加浮点数吗?)
hdel key field []
hkeys key 返回全部键
hvals key 返回全部值
hlen key 字段数量

列表(内部实现是用链表,两头快中间慢)(适用于新鲜事、日志系统)
lpush key value [...] 左边添加
rpush key value [...] 右边添加
lpop key 左弹出
rpop key 右弹出
llen key 列表中有多少元素
lrange key start stop 返回(从左开始)start stop之间的片段(0表示左边第一个)(为负数是表示从右开始,-1表示右边第一个)
ltrim key start stop 截取start stop之间的片段(不返回)
lrem key count value
count>0 删除左开始前count个值为value的元素
count=0 删除所有值为value元素
count<0 删除右开始前count个值为value的元素
lindex key index 返回指定位置的元素(index为位置)
linsert key before/after pivot value 从左往右查找值为pivot的元素,更具before/after决定将value插在它的前面还是后面
rpoplpush source destination 从源的右边弹出,再将该元素压入目标的左边

集合(用无value的散列表实现)
sadd key member [...] 添加元素
srem key member [...] 删除元素
smembers key 返回全部元素
sismember key member 是否在集合中
sdief keyA [keyX ...] 集合差集(元素属于A且不属于后面的集合)
sinter keyA [keyX ...] 集合交集(所有集合的公共部分)
sunion keyA [keyX ...] 集合并集(所有集合的所有部分)
scard key 集合元素的个数
sdiefstore destination keyA [keyX ...] 将集合运算结果放入destination中
sinterstore destination keyA [keyX ...]
sunionstore destination keyA [keyX ...]
spop key 从集合中弹出一个元素
srandmember key [count] 从集合中随机得到count个元素
count不写默认为1
count正数 返回不重复的
count负数 返回可重复的
不是很随机,原理是先随机找一个拉链,再随机找拉链上的值

有序集合(散列表和跳跃表实现的,读中间值也快,耗内存)
zadd key score member [...] 增加分数和成员(+inf 正无穷 -inf 负无穷)
zscore key member 得到元素的分数
zrange key start stop [withscores] 将start 和 stop之间的元素 从小到大排列输出 (带着后面的参数就会输出分数)
zrevrange 从大到小输出
zrangbyscore key min max [withscores] [limit offset count] 得到分数在min 到max之间的元素
在min、max前加"("表示不包括这个值
limit 偏移offset开始 输出count个
zincrby key increment member 为某个成员加上increment分 ,increment可为负
zcard key 获得数量
zcount key min max 获得分数在某个范围之内的数量
zrem key member [...] 删除一个或多个元素
zremrangebyscore key min max 按分数删除元素
zremrangebyrank key start stop 按排名删除元素
zrank key member 从小到大(最小为0)得到member的排名
zrevrank key member 从大到小
zinterstore destination numkeys(集合数量) key[...] [weights [各个集合的权重]] [重复值计算方式]

总结:
1为成功 0为失败
长度 列表为len 集合为card
删除 rem
位置 0 表示正着第一个 -1 表示负的第一个
增加值 incrby 可为负(列表、集合没有)
顺序:默认 从左到右 从小到大

Redis(一)基础的更多相关文章

  1. Redis学习---基础学习[all]

    什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...

  2. Redis 宝典 | 基础、高级特性与性能调优

    转载:Redis 宝典 | 基础.高级特性与性能调优 本文由 DevOpsDays 本文由简书作者kelgon供稿,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长.     作者:kelgon ...

  3. redis最基础的入门教程

      Redis最基础入门教程 简介 Redis 简介 Redis 优势 Redis与其他key-value存储有什么不同? 字符串(Strings) 哈希(Hash) 列表(List) 集合(Sets ...

  4. 探索Redis设计与实现1:Redis 的基础数据结构概览

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  5. 小白也能看懂的Redis教学基础篇——朋友面试被Skiplist跳跃表拦住了

    各位看官大大们,双节快乐 !!! 这是本系列博客的第二篇,主要讲的是Redis基础数据结构中ZSet(有序集合)底层实现之一的Skiplist跳跃表. 不知道那些是Redis基础数据结构的看官们,可以 ...

  6. 小白也能看懂的Redis教学基础篇——做一个时间窗限流就是这么简单

    不知道ZSet(有序集合)的看官们,可以翻阅我的上一篇文章: 小白也能看懂的REDIS教学基础篇--朋友面试被SKIPLIST跳跃表拦住了 书接上回,话说我朋友小A童鞋,终于面世通过加入了一家公司.这 ...

  7. Redis从基础命令到实战之有序集合类型(SortedSet)

    有序集合类型是Redis五种数据类型中最高级的.也是最复杂的类型.有序集合具有集合类型的特性,在其基础上给每个元素关联了一个分值,或称为权重,操作时既可以在添加元素时指定分值,也可以单独修改集合中某一 ...

  8. Redis从基础命令到实战之集合类型(Set)

    Redis集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序.当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出对比列表类型的特点. 其实,集合类型的一 ...

  9. Redis从基础命令到实战之列表类型(List)

    经过上一篇基于Redis散列类型的改造后,实战练习中的商品管理已经具备了增加.修改整体.修改部分属性和分页查询功能,但仍然不支持删除商品的功能.这是因为商品总数是以一个自增数字记录的,且关联了新商品k ...

  10. 新手初学Redis之基础知识命令

    笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面.像其中的mongodb,redis等等.当初也没有深入的去了解Redis,直到自己前段时间在写一个web ...

随机推荐

  1. java获取文件夹下文件名

    public static String [] getFileName(String path) { File file = new File(path); String [] fileName = ...

  2. 设计一个Stack,要求Push、Pop、获取最大最小值时间复杂度都为O(1)

    面试的时候,面试官让设计一个栈,要求有Push.Pop和获取最大最小值的操作,并且所有的操作都能够在O(1)的时间复杂度完成. 当时真没啥思路,后来在网上查了一下,恍然大悟,只能恨自己见识短浅.思路不 ...

  3. 解决VML遭遇IE8和XHTML DOCTYPE时不能运行的问题(转)

    原文网址:http://blog.csdn.net/cuixiping/article/details/4227283  以下代码在IE运行正常 <!DOCTYPE HTML PUBLIC &q ...

  4. QT学习(打个广告)

    最近全面学习QT与c++,希望同行能够指教,于是打算建个群QQ群:85439482,欢迎大家,本群主要专注于QT皮肤库积累,软件架构以及标准c++学习.

  5. 2.3 ARM寄存器详解

    一共有37个寄存器 1. 31个通用寄存器 2. 6个状态寄存器 R13作为堆栈指针 R14链接寄存器 1.保存函数返回地址 2. 异常返回地址 R15程序计数器(PC指针) 程序状态寄存器 只有在异 ...

  6. C#:USB设备枚举 --转自CSDN作者:Splash

    (一)DeviceIoControl的PInvoke /* ---------------------------------------------------------- 文件名称:Device ...

  7. jQuery中时间戳和日期的相互转换

    在项目中经常会使用时间戳和日期的相互转换,可以参考如下代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  8. iOS富文本

    背景:前些天突然想做一个笔记本功能,一开始,觉得挺简单的呀,一个UITextView,网络缓存也不干了,直接本地NSUserDefault存储,然后完事了,美工,弄几张好看的图片,加几个动画,也就这样 ...

  9. JavaScript中的分支结构

    说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的.程序=数据+算法通常我们所说的算法都可以通过"顺序","分支& ...

  10. avalon源码分析(转)

    avalon源码分析目录 第一篇 : 关于前端的MVVM架构 第二篇 : 初步接触 第三篇 : 执行流程1 第四篇 :  执行流程2 第五篇 : 整体架构 第六篇 : ViewModel  第七篇 : ...