redis入门

下载安装

wget http://download.redis.io/redis-stable.tar.gz

tar -zxvf reids-stable.tar.gz

cd redis-stable

make

make install

启动redis

redis-server

在redis源代码的utils的文件下面有一个名字redis-init-script的初始化脚本

我们需要配置redis的运行方式和持久化文件,日志的存储位置,

(1)配置初始化脚本,首先将初始化脚本复制到/etc/init.d目录中,名为redis_端口号,其中端口号是redis监听的端口号,客户端通过该端口连接redis,然后修改脚本中的port为同样的端口号

(2)建立需要的文件夹

/etc/redis   存放配置文件

/var/redis/端口号    存放redis的持久化文件

(3)修改配置文件。首先将配置文件模板复制到/etc/redis/,

以端口号命名 按照以下表的部分参数进行编辑

参数    值  说明

daemonize  yes使redis以守护进程模式运行

pidfile /var/run/redis_端口号.pid 设置redis的pid文件位置

port 端口号 设置redis监听的端口号

dir /var/redis/端口号 设置持久化文件存储位置

停止redis

redis-cli SHUTDOWN

2.3.1命令返回值

命令返回值有5种类型

1状态回复 ping~pong

2错误回复ERR unknown command

3整数回复

4字符串回复

5多行字符串回复

2.4配置

启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redisserver

redis-server /path/to/redis.conf

2.5 多数据库

每个数据库对外都是以0开始的递增数字命名,redis默认支持16个数据库,可以通过配置参数databases来修改这一参数,客户端与redis连接后会默认选择0号数据库,,不过可以随时使用select 更换数据库

3.1 入门实践

打开redis-cli

1获得符合规则的键名列表

KEYS  pattern

2判断一个键是否存在

EXIST  key

3删除键

DEL key

4获得键值得数据类型

TYPE key

3.2 字符串 String

字符串类是redis的的最基本的数据类型,他能存储任何形式的的字符串,

命令 赋值与取值

SET key value

GET key

递增数字

INCR key

3.3散列类型

散列类型适合存储对对象,使用对象类别和ID构成键名,使用字段表示对象属性,而字段值存储属性值,

1赋值与取值

HSET key field value

HGET key field

HMSET key field value[field value]

2判断字段是否存在

HEXIST key field

4增加数字

HINCREBY persor score 60

5删除字段

HDEL car price

返回值是被删除字段的个数

3.3.3实践

3.3.4

只获取字段名或字段值

HKEYS key

HVALS key

获得字段的数量

HLEN car

3.4列表

列表类型可以存储一个有效的字符串列表,列表类型内部使用的是双向链表实现的,获取两端的元素是很快的,这种特性使得列表类型能够非常快速的完成关系数据库难以应付

的场景,如社交网站的新鲜事,我们关心的只是最新内容,

3.4.2

向列表两端增加元素

LPUSH key value

RPUSH key value


LPUSH 表示向列表左边增加元素,返回值为增加元素后的列表个数

同时支持加添多个数据

LPUSH number 2,3

2从列表两端弹出数据

LPOP RPOP

3获取列表元素个数

LLEN numbers

4获取列表片段

LRANGE start stop它能够获取列表中的某一个片段

5删除列表中指定的值

LREM key count value

删除列表中钱count个值为value的元素

3.4.5

LINDEX key index

返回指定索引元素,索引从0开始

LSET index value 他会将索引为index的元素赋值为value

3.5 集合类型

集合类型和列表类型的对比

集合 列表

存储内容     至多2^32-1个字符串 至多2^32-1个字符串

有序性 

唯一性

集合常用的操作是向集合中加入或删除元素,判断某个元素是否存在,由于集合类型redis内部使用的是散列表实现的,所以这些操作的是时间复杂度都是1

最方便的是多个集合类型键之间还能进行并集交集

3.5.2

SADD key member 

SREM key  member

SADD 命令向集合中添加元素,如果键不存在 则会创建,因为集合中不能有相同的元素,所以如果加入的元素已经存在则会忽略这个元素

返回值为成功加入元素的个数

2获取集合中的所有元素

SMEMBERS key

3判断元素是否在集合中

SISMEMBER  key  menber

4集合之间运算

SDIFF  key1 key2

SINTER key1 key2

SUNION key 1 key2

SDIFF 表示集合之间的差集运算

SINTER 表示集合之间的交集运算

SUNION 表示集合之间的并集运算


3.6 有序集合类型

有序集合sorted set,在集合类型的基础上有序集合为集合中的每一个元素都关联了一个分数,这使得我们不仅可以插入 删除 判断是否存在这个元素还能够获得分数最高的钱n个元素,指定分数范围的元素等与分数相关的操作,虽然集合中的每个元素是不同的,他是他们的分数却可以相同

有序集合在一些方面与列表类似

(1)二者都是有序的

(2)二者都可以获得一定范围的元素

但是二者有很大区别,这使得他们的应用场景是不同的

(1)列表是通过链表实现的,获取靠近两端的数据很快,而当元素增多之后,访问中间的元素速度很慢,所以更加适合新鲜事这样的应用

(2)有序集合是使用散列表和跳跃表实现的,所以即使读取中间的元素速度也很快

(3)列表不能简单的调整元素的位置,但是有序集合可以,(通过更改这个元素的分数)

(4)有序集合比列表更消耗内存

3.6.2 命令

ZADD key score member

ZADD命令,用来向有序集合中就一个元素和该元素的分数,如果该元素存在就好会用新的分数替代旧的分数

返回值是新加入到有序集合中的个数

2获得元素的分数

ZSCORE key member

3获得排名在某个范围的元素列表

ZRANGE key  start stop

ZRANGE 会按照元素分数从小到大返回从start 到stop范围之间的所有元素,包括两端元素

4增加某个元素的分数

ZINCREBY key increment member

4.1 事务

MULTI

ok

SADD "user :i:followings " 2

QUEUE

SADD "user:2:followers":1

QUEUE

EXEC

解释一下上面的程序,首先使用multi命令告诉redis,下面我发给你的命令属于同一事务,你先不要执行,而是把他们暂存起来,redis回答ok

而后我发了两个SADD命令来实现关注和被关注,redis返回queue表示两条命令已经存储到事务队列,

当我们把所有要执行的命令都发送给redis后,我们用exec告诉redis 执行所有的已发送命令

不过redis 的不支持回滚,

4.1.3watch命令

watch命令的作用只是当被监控的键值被修改后阻止一个事务的执行,而不能保证其他客户端不修改这一值

执行完exec后会取消对所有键的监控

如果不想执行事务中的命令也可以使用unwatch命令取消监控,

4.2 生存时间

Redis中可以使用EXPIRES命令设置一个键的生存时间,到时间后redis会自动删除他

使用方法为 EXPIRES key seconds

返回1表示成功

如果想知道一个键还有多久时间被删除,可以使用TILL命令,返回值是键的剩余时间,

SET fool bar

EXPIRES foo 20

TTL foo

当键不存在时,TTL命令会返回-1但是没有设置生存时间的话也会返回-1

SORT 命令可以对列表类型,集合类型,有序集合类型,键进行排序


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值