Redis入门教程
一、NoSQL数据库简介
“NOT ONLY SQL”意为不仅仅是数据库,指的是非关系型数据库,以简单的key-value的模式存储。不支持事务,远超SQL的性能。
二、redis数据库简介
Memcashed简介:
- 很早出现的NoSql数据库
- 数据都在内存中,一般不支持持久化
- 支持简单的key-value模式
- 一般是作为缓存数据库辅助持久化的数据库
redis数据库简介:
- 几乎覆盖了Memcashed的绝大部分功能
- 数据都在内存中,支持持久化,主要用作备份恢复
- 除了支持简单的key-value模式,还支持多种数据结构存储,比如list、set、hash、zset等。
- 一般是作为缓存数据库辅助持久化数据库
Redis是一个开源的key-value存储系统。 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash (哈希类型)。 这些数据类型都支持push/pop、add/remove及 取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached- 样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
三、应用场景
四、安装教程
-
官网下载redis-3.2.5.tar.gz的压缩包
-
将这个压缩包复制到linux系统的opt目录下
-
使用解压命令 tar -zxvf radis-3.2.5.tar.gz解压这个文件夹
-
进入解压后的文件夹,执行make命令,发现出现错误,错误如下:
-
执行yum install gcc 和 yum install gcc-c++等待安装完成
-
使用make distclean命令清除上面执行过程的缓存
-
重新在redis解压目录下使用make命令开始安装redis,默认的安装目录为usr/local/bin
五、启动redis
1、使用redis-server前台启动redis服务器
2、将redis更改为后台启动
-
将解压下的目录下的redis.conf文件复制到opt/myRedis目录下
-
使用vi redis.conf命令进入这个配置文件并搜索daemonize,将其值改为yes,保存并退出。
-
使用配置文件启动redis,命令:redis-server /opt/myRedis/redis.conf ; 使用redis-cli -h 主机名 -p 端口号进入redis客户端
3、使用ps -ef | grep redis查看服务端和客户端是否在后台运行,以及几种关闭的方法
- 在前台启动redis,进入之后使用shutdown命令
- 在进程中使用kill number命令
- 使用redis-cli shutdown命令
六、redis的使用
1、端口6379的由来
2、redi默认有16个数据库,类似数组从小标0开始,默认使用的是0号数据库。使用select index的方式选择数据库。
3、redis的五大数据类型
- string(512M), list, set, zset, hash
- 都是以键值对的形式存在的
4、基本语法
1)String:
- keys * :查看所有的键
- exists key :查看某个键值对是否存在,存在返回1,不存在返回0
- type key : 查看键的类型
- expire key secends :为已存在的键设置存在时间
- setex key secends value: 设置一个键值对的同时设置过期的时间。
- ttl key : 查看键的生存时间(time to live)。-1表示永不过期,-2表示已经过期。
- dbsize: 查看当前数据库的key的数量。
- flushdb:清除当前库。
- flushall:清除全部库。
- append key value : 往key对应的值中追加内容。
- strlen key : 获取字符串的长度。
- setnx key value: 只有当可以不存在的时候才设置key的值。
- incr/decr key : 将值加一/减一,只对数值有效。
- incrby/decrby key 步长: 将值按步长进行加减
- mset key1 value2 key2 value2…: 设置多个键值对。
- mget key1 key2…:获取多个键值对。
- msetnx key1 key2 …: 同时设置对个键值对,当且仅当所有给定的key值都不存在的时候设置才生效。
- getrange key start end:获取指定范围的值。
- setrange key start value: 从一个位置复写这个值。
- getset key value : 重写这个键并返回这个键的值。
2)List(简单的字符串列表,底层实现是一个双向链表,对两段的操作性能很高,中间操作性能比较差,有序可重复):
-
lpush key value1 value2 value3…:从左边插入链表的值
-
rpush key value1 value2…:从右边插入链表的值
-
lpop key/rpop key :从左/右弹出链表中的值。
-
rpoplpush key1 key2 :从key1的右边弹出一个值加到key2的左边。
-
lrange key start stop: 查找链表中的指定范围的元素。0表示表头,-1表示表尾。
-
lindex key index: 通过索引获取链表的元素(从左到右)
-
llen key :获得链表的长度。
-
linsert key before value newvalue: 在value的前面插入新的值
-
lrem key n value: 从左至右删除n个value,当n为负数的时候为从右至左删除。0表示删除所有。
3) set(底层是value为null的hash表,所以操作的复杂度都为1。它是无序不可重复的。)
- sadd key value1 value2 value3…:创建一个类型为set的键并往里面添加数据。
- smembers key: 取出set集合里面的元素。
- sismember key value :判断集合里面是否有值为value的元素。
- spop key:随机弹出集合中的一个元素会删除这个元素。
- srandmembers key n:随机从集合中弹出n个元素,不会删除这些元素。
- sinter key1 key2 : 返回两个集合中的交集。
- sunion key1 key2 : 返回两个集合中的并集。
- sdiff key1 key2:返回两个元素的差集。
4)hash(特别适合存储对象)
- hset key filed value: 创建一个hash键,其中filed为hash里面的键名,一般采用这种格式命名:user:1010:uid
- hmset key filed1 value1 filed2 value2:批量创建hash键。
- hexist key filed:判断键里面是否有hash里面的键filed。
- hkeys key :列出hash集合中的所有键名称
- hvals key:列出hash集合中的所有值。
- hgetall key :列出hash里面的所有键值对。
- hincrby key filed increment:为filed键对应的值加上increment并返回结果。
- hsetnx key filed value:将哈希表中的域filed的值设置为value。
5)zset(sort set,没有重复的有序集合,利用score来从小到大进行排序)
- zadd key score1 value1 score2 value2: 设置多个成员的值以及score的值,也可以用来修改元素的score值和添加新的元素。
- zrange key start stop : 按照小标查找指定范围的zset的元素,0是第一个,-1是最后一个。
- zrangebyscore key min max: 查找所有指定范围的score的元素。当min==max的时候表示按score查找元素。
- zrevrange key start stop :将指定范围的元素按从大到小的顺序排列(反转的意思)。
- zincrby key increment value : 为元素的score加上增量。
- zrem key value:删除元素。
- zcount key min max:统计指定范围分数的元素的个数。
- zrank key value:返回该值在集合中的排名。
5、redis的相关配置
crby key increment value : 为元素的score加上增量。
- zrem key value:删除元素。
- zcount key min max:统计指定范围分数的元素的个数。
- zrank key value:返回该值在集合中的排名。