Redis
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication(内置复制机制), Lua scripting(Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。), LRU(Least Recently Used最近最少使用策略) eviction (LRU回收机制) , transactions(事务) and different levels of on-disk persistence, and provides high availability via Redis Sentinel(Redis哨兵机制) and automatic partitioning(自动分区) with Redis Cluster.
BSD——Berkly Software Distribution开源协议是一个给予使用者很大自由的协议。基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。但"为所欲为"的前提当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。1979年加州大学伯克利分校发布了BSD Unix,被称为开放源代码的先驱,BSD许可证就是随着BSD Unix发展起来的。
set key value [expiration EX seconds|PX milliseconds] [NX|XX]
NX:not exist 不存在就存入,相当于数据库中的插入操作
XX:exist 存在就存入,相当于数据库中的更新操作
mset key value[key value...]
multi set 一次性给多个key设置值
setnx key value
setnx:如果key不存在,那么久保存->相当于数据库中的插入操作 set key value nx相同的作用
setex key seconds value
setex:设置key的值并且同时设置失效时间(控制缓存时间)
get key
mget key[key...]
incrby key increment
decrby key decrement
incr key
decr key
set
mset
msetnx
mget
setnx
setex
psetex
Setrange:命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。下标从0开始】
Setrange key offset value
Append:追加,在元素后面(右尾)加
getrange
0 1 2 n
|
|
|
|
|
|
-n -2 -1
Getrange key 1 -2 //去掉头尾的整个内容
flushall 清除所有key
keys pattern
Keys 1? 获取以1开头的长度为2的所有key
Keys 1* 获取以1开头的所有key
keys [0-9][A-z][0-9] 获取长度为3首位都是数字中间一个字母的所有key
expire key seconds 设置key的失效时间,单位是s 所有redis的数据结构的key
pexpire key milliseconds 设置key的失效时间 单位是ms 所有redis的数据结构的key
Persist key 让key永久有效,主要是在key被操作了expire/pexpire
Del key [key...] 删除存在的key,其中有不存在的key也不会报错,有什么删什么
Type key 获取key的类型
Rename key1 key2 将key1 修改成key2,key1不存在了
Exists key [key...] 获取存在的key的数量
lpush key value [value...]
lpushkey value [value...]
lpop key
rpop key
lrange key start stop
blpop key [key...] timeout
brpop key [key...] timeout
Lpush:向集合从左边开始推送数据
Lpush key value...
Rpush :向集合从右边开始推送数据
Rpop:从右边开始删除(一次命令删除一个),弹出值
lpop:从左边开始删除(一次命令删除一个),弹出值
Lrange:区间查询从左开始1-n 从右开始-1- -n
Lrem:lrem key count value 删除数据(count -n)
Ltrim:保留指定索引区间的元素
Lindex:获取指定索引的值
llen:获取list中元素的个数
linsert:插入元素,格式是:linsert list的key before|after 定位查找的值 添加的值
rpoplpush:将元素从一个列表转移到另外一个列表,格式是:rpoplpush 源list的key值 目的list的key值 从一个列表右边的值移动到另一个列表的左边
Brpoplpush:将元素从一个列表转移到另外一个列表,格式是:brpoplpush 源list的key值 目的list的key值 过期时间
blpop/brpop:弹出值,格式是:blpop list的key值 过期时间。(key可以是多个,如果没有值,会一直等到有值,直到过期)