网站首页技术博客

Redis笔记​

洞天水月2021-03-12 14:29:421843人次阅读
摘要redis的介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Red

Redis介绍安装应用

一、redis的介绍

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries.

Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,具有范围查询的排序集,位图,超级日志和具有半径查询的地理空间索引。

二、redis与memcache的区别

Redis与memcache 区别

相同点:

同为高性能的KV(key-value)存储

不同:

1、        redis 可以做存储(store) 而memcache只是缓存(cache)

这是由于redis具有持久化的功能,数据不仅可以存在内存里还可以存在硬盘里进行持久化存储

2、        redis存储的数据有结构可以存字符串,链表,哈希等等而mamcache存储的数据类型只有一种-字符串

三、redis的下载与安装

       Redis官网 https://redis.io/

       下载地址:http://download.redis.io/releases/redis-4.0.10.tar.gz

       Linux 下载命令

cd usr/local/src

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

解压命令

tar -zxf redis-4.0.10.tar.gz

编译

make

安装

 make PREFIX=usr/local/redis install

安装后的redis/bin目录

Redis-server 服务器

redis-cli客户端

Redis-benchmark 压力测试工具

Redis-check-rdb 数据记录日志

Redis-check-aof 语句记录日志

四、运行redis

./bin/redis-server

这样运行redis独占窗口,关闭或取消之后redis就结束进程了

3、        已配置文件方式启动redis

辅助默认配置文件到安装目录

cp /usr/local/src/redis-4.0.10/redis.conf .

编辑redis.conf文件

vim redis.conf

修改daemonize 为 yes

启动

./bin/redis-server redis.conf

正常后台启动

可以看到redis默认端口6379

五、连接redis

./bin/redis-cli

成功连接之后进行简单测试

 

Redis对key的通用操作

rename

rename name xm 

del

del xm

set

set name lily

set name lucy ex 15 设置15秒生命周期

get

get name

redis数据仓库

redis默认不止启动一个数据库,默认启动16个数据库,可以通过select 0-15进行选择,各个数据库之间数据不能共享,可以通过配置文件databases项进行修改,默认存储数据在0号数据库中

 

keys * 索引已存储键

keys * 索引出所有的已存储键名,正式项目中需慎用

keys a* 索引出已a开头的所有键名

keys *a

keys *a*

scan cursor [MATCH pattern] [COUNT count]

SCAN命令是一个基于游标的迭代器。这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程

SCAN命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。

sscan myset 0 match f* count 5

randomkey 返回一个随机key

randomkey

 

exists key 判断键是否存在

exists age

返回0/1 存在返回1 不存在返回0

 

type key 判断存储的键值类型

type age

type name

 

expire key seconds设置键值生命周期

expire key second

expire name 15

设置name 15秒自动过期

 

ttl key 查询剩余声明周期

ttl name

返回值:

整数表示生命周期剩余时间,单位秒

-1表示永不过期

-2表示已过期或不存在

 

pexpire 以毫秒为单位设置声明周期

pttl 以毫秒为单位返回剩余生命周期

persist key 永久化key

persist name 将name设为不自动失效

 

redis字符串类型的的操作

set key value [ex 秒数] / [px 毫秒数]    [nx]/[xx]

ex 生命周期秒数

px 生命周期毫秒数

ex px 同时设置以后设置的为准

nx 不存在时执行即新增

xx 存在时才执行即修改

不加nx|xx参数 有则改无则增

如果该key不存在 set key value xx 执行结果为空

mset name value name value 一次性设置多个键值

mset name 黄圣依 age 34 address 上海

mget name value 一次性获取多个值

mget name age address

 

setrange key offset value 修改字符串指定字符

 

set str hello

setrange str 3 x

输出 helxo

offset 取0或正整数不支持负数倒推

getrange key start end 截取字符串

getrange str 2 4

返回 lxo

注释:如果start 大于字符串长度返回空字符串

如果end大于字符串长度返回截止到字符串结尾

如果start大于end返回空字符串

append key value 追加字符串

append str !

在str末尾追加!,返回新字符串长度

incr key key增加1

指定的key值增加1 并返回加1后的值

注:

如果key 不存在,则把key当做0加1再返回

key值得范围为64位的有符号整数

值域为:-9223372036854775808 .. 9223372036854775807。

decr key key值减少1

指定的key值减少1 并返回减少后的值

 

incrby/decrby key number 增加减少指定值

注:number 支持负数

即incrby age -3

为 age 减 3

相当于 decrby age 3

同理decrby age -5 等于 incrby age 5

incrbyfloat key floatnumber 浮点类型的增加指定值

floatnumber 同样支持负数

 

setbit key offset value 设置offset对应二进制位上的值

A的ASCII编码为65 即二进制的 0100 0001

小a的ASCII编码为97 即二进制的 0110 0001

从左到右修改偏移量为2的位上数据(即第三位)为1

返回该数据位之前的旧值

getbit key offset 获取指定偏移量的二进制位上的数据

bitop operation destkey key [key ...]

对多个key 按位 执行 ANDORXOR and NOT 操作

127.0.0.1:6379> get char

"q"

127.0.0.1:6379> get char2

"Q"

127.0.0.1:6379> del char3

(integer) 1

127.0.0.1:6379> bitop or char3 char char2

(integer) 1

127.0.0.1:6379> get char3

"q"

127.0.0.1:6379> bitop and char3 char char2

(integer) 1

127.0.0.1:6379> get char3

"Q"

 

 

Redis对list链表类型的操作

lpush key value

作用:把值插入到链表头部(左侧),如果链表不存在则创建之后再插入

支持一次插入多个

lpushx key value

作用:链表存在时从左侧插入值,链表不存在则不插入

支持一次插入多个

rpush key value

作用:把值插入链表尾部(右侧)

支持一次插入多个

rpushx key value

作用:链表存在时从右侧插入值,链表不存在则不插入

支持一次插入多个

 

lrange key start stop

作用:返回链表中从start 到stop的元素

注:start从0开始,末尾stop为-1

lpop key

删除链表左侧元素,返回被删除的元素

rpop key

删除链表右侧元素,返回被删除的元素

lrem key count value

作用:删除链表中指定个数(count)的指定值(value)

如果count为负数则表示从右侧删除指定个数的value

返回删除元素的个数

lindex key index

作用:取出指定索引的值,索引从0开始

llen key

作用:获取链表长度

lset key index value

作用:编辑修改指定索引内容的值

ltrim key start stop

作用:保留从start 到stop 之间的值,其他值全部删除,start 从0开始 stop 从-1开始

linsert key before|agter pivot value

在指定值前/后插入值,如果存在多个pivot 只在第一个pivot前|后插入值

返回值:插入成功返回新链表的长度

如果pivot不存在则插入失败返回-1

如果key  不存在则插入失败返回0

rpoplpush source destination

作用:弹出source尾部元素插入到destination头部

返回的是弹出的元素

把source和destination 设置相同可以吧一个链表的尾部元素移动到头部

 

 

Redis对于set集合的操作

集合具有唯一性(互异性)、确定性、无序性

sadd key value

增加集合元素,可一次设置多个

smembers key

查看集合元素

srem key value1 value2

删除集合中指定的值,返回成功删除的个数

spop key count

删除集合中count个随机元素,随机提现了集合的无序性

srandmember key count

随机取出集合中的count个元素

sismember key value

value 元素是否存在于 key 这个集合中

存在返回1 不存在返回0

sinter key1 key2

key1 key2 两集合的交集

sunion key1 key2

key1 key2 两集合的并集

sdiff key1 key2

key1 – key2 的差集

smove source destination member

将source 中的member 元素移动到 destination 中1表示正常移动,0表示source中并不包含参数成员。

sdiffstore destination key1 key2

将key1 key2 的差集存储到destination 中,返回差异成员数量

sinterstore destination key1 key2

将key1 key2 的交集存储到 destination 中,返回交集成员数量

sunionstore destination key1 key2

将key1 key2 的补集存储到 destination中,返回补集成员数量

Redis对于zset(Sorted-Sets) 有序集合的操作

Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted- Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管 Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。

在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集 合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现 的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。

zadd key [nx|xx] [ch] [incr] score member [score member …]

作用:

基本用法添加成员:zadd class 17 lucy 18 lily 19 hmm

成员不存在则添加,存在则修改分数

nx表示成员不存在执行,xx表示成员存在时执行

ch表示发生变化的成员数量,不带这个参数则表示增加的成员数量

修改成员分数时比较有用

incr 带这个参数后score表示的将是在原有基础上增加的分数与zincrby 指令作用相同

返回修改之后的分数

 

zcard key

返回zset有序集合的成员数量

zcount key min max

返回分数在min 和max 之间的成员数量

zrange key start top [withscores]

返回zset集合排名start到stop之前的成员 start从0开始,最后一个元素为-1

withscores 带上这个参数则返回结果中显示分数

zrank key member

返回 key 有序集合中member的排名从0开始,按分数从小到大排序

zrevrank key member

返回key中有序集合中member的排名从0开始,按分数从大到小排序

zrem key member [member]

删除key集合中member元素支持多个

zincrby key increment member

对key中member成员的分数增加increment

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

取出分数min 到 max之前的数据

默认情况下,区间的取值使用闭区间(小于等于或大于等于),你也可以通过给参数前增加(符号来使用可选的开区间(小于或大于)。

withscores 带上这个参数返回数据时带上参数

limit offset count 可以进行分页 类似mysql: limit 0 5

zremrangebyrank key start stop

移除有序集key中,指定排名(rank)区间内的所有成员。下标参数start和stop都以0为底,0处是分数最小的那个元素。这些索引也可是负数,表示位移从最高分处开始数。例如,-1是分数最高的元素,-2是分数第二高的,依次类推。

##返回值

integer-reply: 被移除成员的数量。

zscore key member

返回有序集key中,成员member的score值。

如果member元素不是有序集key的成员,或key不存在,返回nil。

 

文章评论