Redis——它是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,我们可使用它构建高性能,可扩展的Web应用程序。
特点:
-
支持更多的数据类型,除了和String外还支持lists(列表),sets(集合)和zsets有序集合。异常快速:redis数据库完全在内存中,因此速度很快。数据持久化:支持数据持久化,可以将内存中的数据存储在磁盘上。支持丰富的数据类型:相比许多其他的键值对数据类型,redis拥有丰富的数据类型。数据一致性:所有的redis操作都是原子的,如果两个客户端同事访问redis服务器将获得更新后的值。多功能使用工具:redis是一个多实用的工具,可以在多个例如缓存,消息,队列使用(redis原生支持发布/订阅),任何短暂的数据,应用程序,例如web应用程序回话,网页命中计数
string(字符串)
- SET:string是redis中最基础的数据类型,SET的指令是将字符串value关联到key。语法格式:SET key value
- SETEX:SETEX指令试讲value关联到key,并将key的生存时间设为seconds(以秒为单位)。语法格式:SETEX key seconds value
- GET:GET指令返回key所关联的字符串值,如果key不存在,那么返回特殊值nil,如果key存储的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值,语法格式:GET key
- APPEND:如果key存在并且是一个字符串,APPEND命令会将value追加到key原来的值末尾。语法格式:APPEND key value
- MSET:同时设置多个key-value对,语法:MSET key value [key value ...]
- MGET:同时获取多个key的值,语法:MGET key [key...]
- SETRANGE:覆写给定的key,从偏移量offset开始,语法SETRANGE key offset value
- STRLEN:获取key的长度,语法:STRLEN key
- 其他不常用的指令:GETSET:设置键的字符串值,并返回旧值。GETRANGE:得到字符串的子字符串存放的一个键。GETBIT:对key所村粗的字符串值,获取指定偏移量上的位(bit).SETBIT:对key所存储的字符串值,设置或清除指定偏移量上的位。SETNX:将key的值设为value,当且仅当key不存在。MSETNX:同时设置一个或多个key-value对当且仅当给定的key都不存在。PSETEX:和SETEX命令相似,但他一毫秒的单位设置key的生存时间,而不是像SETEX命令那样,一秒为单位。INCR:将key中村粗的数字值增一。INCRBY:将key所存储的值奖赏指定增量。INCRBYFLOAT:将key中所村粗的值奖赏指定浮点数增量。DECR:将key中村粗的数字值减一。DECRBY:将key所存储的值加上指定增量
hash(哈希表)
- redis的哈希值是字符串字段和字符串值之间的映射
- HSET:使用HSET将哈希表key中的域filed值设为value,语法:HSET key field value
- HMSET:设置对个field-value对设置到哈希表的key中,语法:HMSET key field value [field value ...]
- HGET:获取指定域key的值,语法HGET key field
- HMGET:一次性获取哈希表key中,一个或多个给定域的值,基本语法:HMGET key field [field ...]
- HGETALL:获取所有的域值,语法:HGETALL key
- HEXISTS:判断一个key是否存在某个field中,基本语法:HEXISTS key field。存在返回1,不存在返回0
- HEKYS:使用HKEYS来获取哈希表key中所有的域,基本语法:HEKYS key
- HLEN:返回哈希表key中域的数量,语法:HLEN key
- HDEL:删除哈希表key中的一个或多个指定域,语法HDEL key field [field ...]
list(列表)
- Redis 列表是简单的字符串列表,按照插入顺序排序。
- LPUSH:是将一个或多个value插入到列表key的表头,语法:LPUSH key value [value ...]
- LSET:将列表key下标为index的元素的值设置为value,语法:LSET key index value
- LPOP:移除列表第一个元素,语法:LPOP key
- LINDEX:获取指定下标的key,语法:LINDEX key index。0表示第一个,1表示第二个,-1表示最后一个
- LINSERT:将值value插入到列表key当中,位于值pivot之前或之后,语法:LINSERT key BEFORE|AFTER pivot value
- LREM:移除列表某个value值count次,语法:LREM key count value。 count为0,移除列表中所有与value相等的值,count》0,从表头开始搜索移除value,数量为count,count<0,从表尾开始,移除value值数量为count
- LLEN:获取列表的长度,语法:LLEN key
- LTRIM:对列表裁剪,语法:LTRIM key start stop
set(集合)
- 集合(set)是一个无需的字符串集合,可以快速添加,删除以及测试元素是否存在
- SADD:将一个或多个member元素加入到key当中,语法:SADD key member [member ...]
- SPOP:随机取出集合中的某个元素。语法:SPOP key
- SMEMBERS:获取集合中所有的元素。语法:SMEMBERS key
- SCARD:查看集合元素中的数量.语法:SCARD key
- SDIFF:比较多个集合,取得连个之间不同的元素。SDIFF key [key ...]
- SINTER:获取集合的交集,语法:SINTER key [key ...]
- SUNION:获取集合的并集,语法:SUNION key [key ...]
- SISMEMBER:判断某个元素是否在一个集合中,语法:SISMEMBER key member
- SMOVE:移出某个元素,语法:SMOVE source destination member
- SREM:移除元素,语法:SREM key member [member ...]
zset(有序集合)
-
Redis 有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但评分可以重复。
使用有序集合你可以以非常快的速度 添加 、 删除 和 更新 元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。在有序集合中,你可以很快捷的访问一切你需要的东西:有序的元素,快速的存在性测试,快速访问集合的中间元素! 简而言之使用有序集合你可以做完成许多对性能有极端要求的任务,而那些任务使用其他类型的数据库真的是很难完成的。
- ZADD:将一个或多个member元素及其score值加入到有序集key当中,语法:ZADD key score member [[score member] ...]
- ZREM:移除指定成员,语法:ZREM key member [member ...]
- ZSCORE:获取集合中某个元素的分数,语法:ZSCORE key member
- ZRANGE:获取集合的成员,语法:ZRANGE key start stop [WITHSCORES]
- ZCARD:查看成员数量,语法:ZCARD key
- ZCOUNT:查看评分之间的成员,语法:ZCOUNT key min max
- ZRANK:依据评分对集合中的元素进行从小到大排序,语法:ZRANK key member
- ZINCRBY:给指定元素增加评分,语法:ZINCRBY keyincrement member
key
- KEYS:查找所有符合给定模式pattern的key,语法KEYS pattern
- EXISTS:判断key是否存在,语法EXISTS key
- MOVE:将当前数据库的key移动到给定的数据库db当中,语法:MOVE key db
- RENAME:将原有的key修改为新的key名称,语法:RENAME key newkey
- SORT:可以返回或保存给定列表,集合,有序集合key中经过排序的元素,语法:SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
- DUMP:可以对给定key进行序列化,语法:DUMP key
- EXPIRE:为key设置生成时间,语法:EXPIRE key seconds
- TTL:获取key的剩余生存时间,语法:TTL key