Redis

Redis是一个开源的使用ANSI C语言编写、遵守BDS协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis又称为数据结构服务器,因为值(value)有以下:字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(Zset)。

Redis的特点:1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

                           2、Redis不仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash数据结构的存储

                           3、Redis支持数据的备份,即master-slave模式的数据备份。

Redis优势:性能极高(读写速度快)、丰富的数据类型、原子性(Redis的所有操作都是原子性的,原子性:要么成功执行要么失败完全不执行)

Redis支持五种数据类型:字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(Zset)

String(字符串)

一个key对应一个value,String类型的值最大能存储512MB

Hash(哈希)

Hash是一个键值(key==>)对集合,Hash是一个String类型的field和value的映射表,hash特别适合用于存储对象

List(列表)是简单的字符串列表,按照插入顺序排序

Set(集合)

Set是string类型的无序集合

集合是通过哈希表实现,添加、删除、查找的复杂度都是O(1)。

Zset(sorted   set:有序集合)

类型

简介

特性

场景

String(字符串)

二进制安全

可以包含任何数据(jpg图片或序列化的对象),一个键最大能存储512M

 

Hash(哈希值)

键值对集合,Map类型

适合存储对象,并且可以像数据库中的update一个属性一样只修改一项属性值

存储、读取、修改用户属性

List(列表)

链表(双向链表)

增删快、提供了操作某一段元素的API

1、最新消息排行榜、2、朋友圈的时间线

 

3、消息队列

Set集合

哈希表实现、元素不重复

1、添加、删除、查找的复杂度都是O(1)

2、为集合提供了求交集、并值、差集

 

1、共同好友

2、利用唯一性,统计访问网站的所有独立ip

3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐

SortedSet(有序集合)

将Set中的元素增加一个权重参数score、元素按score有序排序

数据插入集合时、已进行排序

1、排行榜

2、带权重的消息队列

Redis命令

要在redis服务上执行命令需要一个redis客户端,存在于默认的安装包中

启动redis客户端:redis-cli,连接本地的redis服务         

避免中文乱码:redis-cli    - - raw

连接到本地的redis服务并执行ping命令,用于检测redis服务是否启动

redis-cli  -h  host  -p  port   -a  password

例:redis-cli  -h 127.0.0.1  -p  6379   -a     "mypass"  

 Redis keys命令

Redis Key 命令

DEL  key

Key存在时删除key

DUMP  key

序列化给定key,并返回被序列化的值

EXISTS  key

检查给定的key是否存在

EXPIRE  key seconds

设置key的过期时间,以秒计

EXPIREAT  key  timestamp

设置过期时间,接受的参数是timestamp

PEXPIRE key milliseconds

设置key的过期时间以毫秒计

PEXPIREAT key milliseconds-timestamp

设置key过期的时间戳

KEYS  pattern

查找所有符合给定模式的key

MOVE key db

将当前数据库的key移动到给定的数据库db中

PERSIST  key

移除key的过期时间,key将持久保持

PTTL  key

以毫秒为单位返回key的剩余的过期时间

TTL  key

以秒为单位,返回给定的key的剩余生存时间(TTL,time to  live)

RANDOMKEY

从当前数据库中随机返回一个key

RENAME  key  newkey

修改key的名称

RENAME  key   newkey

仅当newkey不存在时,将key改名为newkey

TYPE  key

返回key所储存的值的类型

Redis     Hash(哈希)

hash是一个string类型的field和value的映射表,hash特适用于存储对象

Redis  hash命令

Hash命令

 

HDEL  key  field

删除一个或多个哈希表字段

HEXISTS  key field

查看哈希表key中,指定的字段是否存在

HGET key  field

获取存储在哈希表中指定字段的值

HGETALL  key

获取在哈希表中指定key的所有字段和值

HKEYS key

获取所有哈希表中的字段

HLEN  key

获取哈希表中字段的数量

HMGET  key field

获取所有给定字段的值

HMSET  key1 field  value1

同时将多个field-value(域值对设置到哈希表key中)

HSET  key field  value

将哈希表中key中的字段field的值设为value

HSETNX  key field value

只有在字段field不存在时,设置哈希表字段的值

HVALS  key

获取哈希表中所有值

HSCAN  key  cursor

迭代哈希表中的键值对

Redis    列表(List)

列表是简单的字符串列表,按照插入顺序排序。(可以添加一个元素到列表的头部或者尾部)

List(列表)

BLPOP key1[key2] timeout

移出并获取列表的第一个元素

BRPOP  key1[key2] timeout

移出并获取列表的最后一个元素

BRPOPLPUSH  source destination  timeout

从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它

LINDEX  key index

通过索引获取列表中的元素

LINSERT  key  BEFORE|AFTER  pivot  value

在列表的元素前或后插入元素

LLEN key

获取列表长度

LPOP  key

移出并获取列表的第一个元素

LPUSH  key  value

将一个或多个值插入到列表头部

LPUSHX  key  value

将一个值插入到已存在的列表头部

LRANGE  key start stop

获取列表指定范围内的元素

LREM  key  count value

移除列表元素

LSET  key index value

通过索引设置列表元素的值

LTRIM  key start stop

对一个列表进行修剪

RPOP key

移除列表的最后一个元素,返回值为移除的元素

RPOPLPUSH  source  destination

移除列表的最后一个元素,并将该元素添加到另一个列表并返回

RPUSH  key value

在列表中添加一个或多个值

RPUSHX  key  value

为已存在的列表添加值

Redis  Set(集合)

Set是String类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据。

Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。

Set集合命令

SADD key1  member1

向集合添加一个或多个成员

SCARD  key

获取集合的成员数

SDIFF  key1

返回给定所有集合的差集

SDIFFSTORE   destination key1

返回给定所有集合的差集并存储在destination中

SINTER key1

返回给定所有集合的交集

SINTERSTORE  destination key1

返回给定所有集合的交集并存储在destination中

SISMEMBER  key member

判断member元素是否是集合key的成员

SMEMBERS  key

返回集合中的所有成员

SMOVE   source  destination  member

将member元素从source集合移动到destination集合

SPOP key

移除并返回集合中的一个随机元素

SRANDMEMBER key

返回集合中一个或多个随机数

SREM  key member1

移除集合中一个或多个成员

SUNION  key1

返回所有给定集合的并集

SUNIONSTORE destination key1

所有给定集合的并集存储在destination集合中

SSCAN  key  cursor

迭代集合中的元素

Redis   Sorted  Set有序集合

Redis有序集合是String类型元素的集合,且不允许重复的成员

有序集合的成员是唯一的,但分数(Score)却可以重复

集合是通过哈希表实现,添加、删除、查找的复杂度都是O(1).

Sorted Set(有序集合)

ZADD  key  score1  member

向有序集合添加一个或多个成员

ZCARD  key

获取有序集合的成员数

ZCOUNT key  min max

计算在有序集合中指定成员的分数的成员数

ZINCRBY key  increment member

计算给定的一个或多个有序集合的交集并将结果集存储在新的有序集合key中

ZLEXCOUNT  key  min max

在有序集合中计算指定字典区间内的成员数量

ZRANGE  key  start stop

通过索引区间返回有序集合成指定区间内的成员

ZRANGEBYLEX key min max

通过字典区间返回有序集合的成员

ZRANGEBYSCORE  key  min max

通过分数返回有序集合指定区间内的成员

ZRANK  key  member

返回有序集合中的一个或多个

ZREM  key member

移除有序集合中的一个或多个

ZREMRANGEBYLEX   key  min max

移除有序集合中给定的字典区间的所有成员

ZREMRANGEBYRANK  key start  stop

移除有序集合中给定的排名区间的所有成员

ZREMRANGEBYSCORE  key min max

移除有序集合中给定的分数区间的所有成员

ZREVRANGE  key start stop

返回有序集合中指定区间内的成员,通过索引,分数从高到低

ZREVRNGEBYSCORE  key max min

返回有序集合中指定分数区间内的成员,分数从高到低

原文地址:https://www.cnblogs.com/cye9971-/p/11167490.html