启动命令
./redis-server –port 6380 &
启动多个redis实例:
redis-server /usr/local/redis/redis6380.conf
redis-server /usr/local/redis/redis6381.conf
客户端链接
./redis-cli -p 3680
常用命令
keys pattern
keys * //表示匹配所有
keys na*//na开头
keys *e//e结尾
exists key
查看key是否存在
exists name//查看key为name的值是否存在
set
设置 key 对应的值为 string 类型的 value
set sex man
setnx
设置key对应的值为string类型的value。如果key已经存在,返回0.nx是not exist的意思
setnt name lichenyi1 //设置已存在的key 返回0
setnt name1 lichenyi0 //设置不存在的key 返回1
del
删除某个key。删除成功返回1,删除失败返回0
del name1 //首次执行
del name1 //再次执行
expire
设置过期时间(单位秒)
expire name 30//key为name的值有效期设置为30秒
ttl name //查看 该key的有效期 返回负数则key失效,key不存在了
setex
设置key对应的值为string类型的value,并指定此键值的有效期
setex name 10 lichenyi//设置name对应的值为lichenyi并设置有效期为10秒
mset
一次设置多个key值,成功返回OK;返回0说明设置失败,没有任何值被设置
mset k1 v1 k2 v2
getset
设置key的值,并返回key的旧值
getset age 20//返回的是原来的值
mget
一次获取多个key的值,如果对应的key不存在,返回nil
mget name age name1
incr
对key的值做++操作,相当于i++。如果incr key对应的值不能转为int类型,会报错,incr一个不存在的key,则设置key为1.
incr age//返回21 返回的值为设置之后的值
incr age1//返回1
incrby
同incr类似,加指定值。key不存在的时候设置key,默认value为0
incrby key 增量//增量可以为正数或者负数
decr
对 key 的值做的是减减操作,decr 一个不存在 key,则设置 key 为-1
decr age
decrby
同decr,减去指定的值
decrby age 2
append
给指定的key对应的值追加字符串,返回新的字符串的长度.如果该key不存在,则新建key并赋值为追加的字符
append key value
append name -nice
strlen
获取指定key的value的长度
strlen key
persist key
取消过期时间
语法:persist key
persist name
select
选择数据库
语法:select 库索引
select 1//选择1库
move
把某个key移动至某个库
move key 库索引
move age 1
randomkey
随机返回一个key
randomkey
rename
重新命名
语法: rename key newkey
rename name nam
type
返回数据类型
语法:type key
type name
ping
测试链接是否成功
ping
quit
推出链接
quit
dbsize
返回key的数量
dbsize
info
输出redis的信息
info
config get | set
显示或者修改配置
config get *port*
string
字符串
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
set key value
set name xiaoming
hash
hmset name key1 value1 key2 value2
Redis hash 是一个键值(key=>value)对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
list
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
格式: lpush name value
在 key 对应 list 的头部添加字符串元素
格式: rpush name value
在 key 对应 list 的尾部添加字符串元素
格式: lrem name index
key 对应 list 中删除 count 个和 value 相同的元素
格式: llen name
返回 key 对应 list 的长度
lpop keyList:取出并移除keyList第一个元素,左边的元素
rpop keyList:取出并移除keyList最后一个元素,右边的元素
LINDEX key index:获取该索引下的元素。
set
集合
格式: sadd name value
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
smembers //返回集合中的所有成员
scard //获取集合的成员数
sdiffstore destination key1 [key2] //返回给定所有集合的差集并存储在 destination 中
sinter key1 [key2] //返回给定所有集合的交集
zset
格式: zadd name score value
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
事物
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
发布与订阅
布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的
耦合,这点和设计模式中的观察者模式比较相似。pub/sub 不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。
在redis实现是SUBSCRIBE (订阅主题)、 UNSUBSCRIBE(取消主题) 和 PUBLISH(推送)
PSUBSCRIBE支持*匹配的方式