Redis: 1、Redis基础

以下内容均来自: http://www.runoob.com/redis/redis-tutorial.html

一、redis 基础

含义: REmoteDIctionary Servers key-value存储系统。
特点: C语言编写,基于内存可持久化的日志型
别名:数据结构服务器,值可以是字符串,哈希,列表,集合,有序集合
优点:
1支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载。支持备份。
2性能好:读:11万次/秒,写:8.1万次/
3数据类型丰富:字符串,列表,哈希,集合等
4原子操作
5支持key过期等
安装:
Linux安装
目前使用的redis版本是4.0.7
参考:
https://www.jianshu.com/p/ebda253a8daa
yum install redis -y
systemctl start redis.service
systemctl enable redis.service

二、Redis配置
http://www.runoob.com/redis/redis-conf.html

Redis数据类型
string(字符串)hash(哈希),list(列表),set(集合),zset(有序集合)
3.1 String
stringRedis最基本的数据类型,一个键最大能存储512MB
3.2 Hash
含义:是键值(key=>value)对集合
string类型的fieldvalue的映射标,hash适合存储对象
3.3 List
Redis的字符串列表,按照插入顺序排序
3.4 Set
集合,是string类型的无序集合
集合是通过哈希表实现的,添加,删除,查找的复杂度是O(1)
3.5 zset
有序集合,包含string类型元素
每个元素会关联double分数,进行排序

Redis命令
含义:在redis服务上执行操作
redis-cli启动客户端
检验redis服务是否启动
redis 127.0.0.1:6379> PING

远程服务上执行命令
redis-cli -h host -p port -a password

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


五、Redis(key)
作用:管理redis的键
语法: COMMAND KEY_NAME
127.0.0.1:6379>SET machao redis
OK
127.0.0.1:6379>DEL machao
(integer)1
键删除成功:输出1
否则输出:0

Rediskeys命令
1)DEL key-value
key存在时删除key
2)DUMP key
序列化给定key,返回被序列化的值
3)EXISTS key-value
检查key是否存在
4)EXPIREkey seconds
为给定key设置过期时间
5) EXPIREATkey timestamp  
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳
6) PEXPIREkey milliseconds  
设置key的过期时间以毫秒计。
7)KEYS pattern
查找所有符合给定模式的key
8)MOVEkey db
将当前数据库的key移动到给定的数据库db当中
9)PERSIST key
key持久化
10)TTL key
以秒为单位,返回给定key的剩余生存时间
11)RENAME key newkey
修改key的名称
12)TYPEkey
返回key所储存的值的类型

六、Redis字符串
1) SETkey value  
设置指定 key 的值
2) GETkey  
获取指定
key 的值。
3 GETSETkey value
将给定
key 的值设为 value ,并返回 key 的旧值 (oldvalue)

七、Redis哈希
含义:这里的哈希实际时string类型的filedvalue的映射,适用存储对象
例子:
127.0.0.1:6379>HMSET people name "chao" score "329"
OK
127.0.0.1:6379>HGETALL people
1)"name"
2)"chao"
3)"score"
4)"329"
127.0.0.1:6379>HGET people score
"329"

1 ) HDELkey field1 [field2]  
删除一个或多个哈希表字段
2) HEXISTSkey field  
查看哈希表
key 中,指定的字段是否存在。
3) HGETkey field  
获取存储在哈希表中指定字段的值。
4) HGETALLkey  
获取在哈希表中指定 key 的所有字段和值
5) HKEYSkey  
获取所有哈希表中的字段

八、Redis列表
列表:是字符串列表,按照插入顺序排序
可以添加元素到列表头部(左边)或者尾部(右边)
例子:
127.0.0.1:6379>LPUSH scores 309
(integer)1
127.0.0.1:6379>LPUSH scores 329
(integer)2
127.0.0.1:6379>LRANGE scores 0 10
1)"329"
2)"309"

命令:
1) BLPOPkey1 [key2 ] timeout  
移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
2) BRPOPkey1 [key2 ] timeout  
移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3) BRPOPLPUSHsource destination timeout  
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4) LINDEXkey index  
通过索引获取列表中的元素
5)


LLENkey
 
获取列表长度


九、Redis集合(Set)
String类型数据
127.0.0.1:6379>SADD names chao
(integer)1
127.0.0.1:6379>SADD names yan
(integer)1
127.0.0.1:6379>SADD names chao
(integer)0

1) SADDkey member1 [member2]  
向集合添加一个或多个成员
2) SCARDkey  
获取集合的成员数
3) SDIFFkey1 [key2]  
返回给定所有集合的差集
4) SDIFFSTOREdestination key1 [key2]  
返回给定所有集合的差集并存储在
destination
5) SINTERkey1 [key2]  
返回给定所有集合的交集

十、 Redis 有序集合 (sortedset)
含义:有序集合,关联double类型分数
例子:
127.0.0.1:6379>ZADD age 1 chao
(integer)1
127.0.0.1:6379>ZADD age 2 yan
(integer)1
1 ZADDkey score1 member1 [score2 member2]  
向有序集合添加一个或多个成员,或者更新已存在成员的分数
2) ZCARDkey  
获取有序集合的成员数
3) ZCOUNTkey min max  
计算在有序集合中指定区间分数的成员数
4) ZINCRBYkey increment member  
有序集合中对指定成员的分数加上增量
increment
5) ZINTERSTOREdestination numkeys key [key ...]  
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合key


十一、Redis发布订阅
含义:发布订阅是消息通信模式,发送者发送消息,订阅者接收消息
Publish
channel
clien1client2 client3
命令:
创建一个频道:
127.0.0.1:6379>SUBSCRIBE redisChat
Readingmessages... (press Ctrl-C to quit)
1)"subscribe"
2)"redisChat"
3)(integer) 1


1)"message"
2)"redisChat"
3)"Redis is great"
1)"message"
2)"redisChat"
3)"Study hard"

发送消息:
127.0.0.1:6379>PUBLISH redisChat 'Redis is great'
(integer)1
127.0.0.1:6379>PUBLISH redisChat 'Study hard'
(integer)1

1

PSUBSCRIBEpattern [pattern ...] 
订阅一个或多个符合给定模式的频道。

2

PUBSUBsubcommand [argument [argument ...]] 
查看订阅与发布系统状态。

3

PUBLISHchannel message 
将信息发送到指定的频道。

4

PUNSUBSCRIBE[pattern [pattern ...]] 
退订所有给定模式的频道。

5

SUBSCRIBEchannel [channel ...] 
订阅给定的一个或多个频道的信息。

6

UNSUBSCRIBE[channel [channel ...]] 
指退订给定的频道。



具体参见:
http://www.runoob.com/redis/redis-pub-sub.html


十二、Redis事务
特点:Redis事务可以一次执行多哥命令
批量操作在发送EXEC命令钱被放入队列缓存
收到EXEC命令后进入事务执行,事务中某命令失败,其余命令依赖被执行
事务执行,其他命令不会插入到事务中
事务执行阶段:
开始事务,命令入队,执行事务
本质:打包批量执行脚本,失败不会回滚也不会导致后面命令不执行
例子:
事务以MULTI开始事务,将多好哥命令粗怒队列,执行事务
127.0.0.1:6379>multi
OK
127.0.0.1:6379>set a aaa
QUEUED
127.0.0.1:6379>set b bbb
QUEUED
127.0.0.1:6379>set c ccc
QUEUED
127.0.0.1:6379>exec
1)OK
2)OK
3)OK

具体命令:
1) DISCARD  
取消事务,放弃执行事务块内的所有命令。
2) EXEC  
执行所有事务块内的命令。
3) MULTI  
标记一个事务块的开始。
4) UNWATCH  
取消WATCH命令对所有key的监视。
5) WATCHkey [key ...]  
监视一个(或多个)key ,如果在事务执行之前这个(或这些)key 被其他命令所改动,那么事务将被打断。

参见:
http://www.runoob.com/redis/redis-transactions.html


十三、Redis脚本
含义:Redis脚本用Lua解释其执行,执行脚本的常用命令为EVAL
Eval命令语法如下:
EVAL script numkeys key [key ...] arg [arg ...]
例子:
127.0.0.1:6379>EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2first second
1)"key1"
2)"key2"
3)"first"
4)"second"


1

EVALscript numkeys key [key ...] arg [arg ...] 
执行Lua 脚本。

2

EVALSHAsha1 numkeys key [key ...] arg [arg ...] 
执行Lua 脚本。

3

SCRIPTEXISTS script [script ...] 
查看指定的脚本是否已经被保存在缓存当中。

4

SCRIPTFLUSH 
从脚本缓存中移除所有脚本。

5

SCRIPTKILL 
杀死当前正在运行的Lua 脚本。


十四、Redis连接
Redis连接命令用于连接redis服务
redis 127.0.0.1:6379> AUTH "password"
OK


1

AUTHpassword 
验证密码是否正确

2

ECHOmessage 
打印字符串

3

PING 
查看服务是否运行

4

QUIT 
关闭当前连接

5

SELECTindex 
切换到指定的数据库


十五、Redis服务器
Redis服务器用于管理redis服务

127.0.0.1:6379>INFO
#Server
redis_version:3.2.10
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c8b45a0ec7dc67c6
redis_mode:standalone
os:Linux3.10.0-514.el7.x86_64 x86_64
arch_bits:64

命令:

1

BGREWRITEAOF 
异步执行一个AOFAppendOnlyFile)文件重写操作

2

BGSAVE 
在后台异步保存当前数据库的数据到磁盘

3

CLIENTKILL [ip:port] [ID client-id] 
关闭客户端连接

4

CLIENTLIST 
获取连接到服务器的客户端连接列表

5

CLIENTGETNAME 
获取连接的名称




猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/79888092