Redis基本用法

一、Redis简介:

Redis = REmote DIctionary Server, key-value数据库。

特点是:
(1)性能极高,读写速度快;
(2)运行在内存中,亦可持久化到磁盘上;
(3)不仅仅支持简单的key-value,同时提供list、hash、set、zset多种数据结构;
(4)支持master-slave模式数据的备份。

使用方法:

默认安装目录:

/usr/local/bin/

默认启动为前台方式,改为后台守护进程形式运行:

mkdir /etc/redis
vi /etc/redis/6379.conf
//dameonize no   ==>   dameonize yes
./redis-server /etc/redis/6379.conf

带密码的方式启动客户端:

vi /etc/redis/6379.conf
//# requirepass foobared   ==> requirepass myredis
./redis-cli -h 127.0.0.1 -p 6379 -a myredis

启动命令:

./redis-server
./redis-cli

二、Redis基本数据类型:

Redis支持五种数据类型:

string(字符串);
hash(哈希);
list(列表);
set(集合);
zset(有序集合:sorted set)。

1. 字符串:string

string类型是redis最基本的数据类型,一个key对应一个value,string类型是二进制安全的,意思是redis的string可以包含任何数据, 比如jpg图片,但有最大存储限制是512MB。

set key value		//插入key-value
get key 			//	获取value

mset key1 value1 key2 value2 key3 value3	//批量插入
mget key1 key2 key3							//批量获取

string类型的附加操作:

incr key
incrby key increment

decr key 
decrby key decrement

Redis应该尽量以批量的形式操作,因为TCP有头部开销。

2. 哈希:hash

在redis的key-value模型中,hash的value格式是 (field, value), 相当于value中存着的是map。

hset key field value
hget key field

hmset k1 f1 v1 k1 f2 v2
hmget k1 f1 k1 f2

3. 列表:list

redis中的列表形式跟双向链表相仿,支持元素的左、右插入和访问。

lpush key v1
rpush key v2
lrange key start end

lpop key
rpop key

lpush key v1 v2 v3		//链表的批量插入
rpush key v1 v2 v3

4. 集合:set

redis中的集合是无序集合,集合中的元素类型是string,set通过哈希表实现,因此添加、删除、访问的时间复杂度都是O(1)。

sadd key value
smembers key

set中的元素不允许有重复的,插入一个元素成功则返回1,如果集合中已经存在相同元素,则返回0。

5. 有序集合:zset

zset有序集合中,每个元素都会关联一个double类型的分数(权值),按权值从小到大有序存储。

zadd key score member
zrange key start end			//按照元素下标访问
zrangebyscore key start end		//按照权值范围访问

三、Redis发布订阅(pub/sub):

pub/sub是一种消息通信模式,在多个客户端之间进行通信。

需要接收消息的客户端先订阅频道(channel),发送方向channel中发送数据,订阅此频道的所有接收端都会收到消息。

subcribe my_channel					//订阅频道

publish my_channel "my_message"		//向频道中发送消息

unsubscribe channel					//退订频道

psubscribe channel1 channel2		//批量订阅
punsubscribe channel1 channel2		//批量退订

四、Redis事务:

一个redis事务的执行过程:

开始事务 --> 命令入队 --> 执行事务 --> 执行完毕

注意:

  1. Redis事务可以理解为一个打包的批量执行脚本执行批量指令,并不是原子化的操作,中间某条指令的失败不会导致前面已执行指令的回滚,也不会造成后序指令的不执行;
  2. 从multi指令开始事务,从exec指令开始执行事务,在exec之后到事务执行完毕之前,Redis整个库都是被锁住的状态,其他客户端无法进行任何操作;在multi到exec之间这段命令入队的阶段,数据库不上锁。
multi		//开始事务

//一些指令...

exec		//执行上述入队的所有指令

//或者:
discard		//不执行,放弃事务块内的所有指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值