您的位置:首页 > 数据库 > Redis

Redis 学习笔记(一) — 环境搭建及命令

2016-10-18 22:31 645 查看

Redis 学习笔记(一) — 环境搭建及命令

标签(空格分隔): Redis Redis环境搭建 Redis命令

Redis环境搭建

Redis介绍

Redis是一款开源(BSD许可),基于内存存储的数据结构服务器。可用于数据库存储、高速缓存和消息队列代理。它支持字符串、哈希表、列表集合、有序集合、位图、hyperloglogs等数据类型。

Redis的特点:
1. Redis是一个高性能的Key/Value数据库
2.基于内存  -- 磁盘备份
3.数据类型丰富(String(验证码)),List Set ZSet(排行榜),Hash(Key-Value)
4.持久化(RDB(日志文件)  AOF(内存快照))
5.Value最大支持1GB存储


下载:http://download.redis.io/redis-stable.tar.gz

Redis安装

1.下载Redis所需依赖:
[root@qikk ~]# yum install -y gcc
[root@qikk ~]# yum install -y tcl
[root@qikk ~]# yum install -y ruby
[root@qikk ~]# yum install -y rubygems
[root@qikk ~]# yum install -y redis

提示:以上命令需在联网下使用
2.编译安装Redis:
解压下载的redis:
[root@qikk ~]# tar -zxf redis-stable.tar.gz
在解压过后的目录里编译:
[root@qikk redis-stable] make intall PREFIX=指定编译目录
注:编译完成后,会在编译目录产生执行文件redis-server,redis-cli、redis-benchmark、redis-check-rdb 、redis-check-aof、redis-sentinel、redis-trib.rb 等可执行命令。


启动Redis服务

[root@qikk redis-stable]# ./src/redis-server --protected-mode no
注:本次实验Redis version 3.2.1,需要暂时关闭保护


查看Redis进程

[root@qikk redis-stable]# ps -ax | grep redis
1442 pts/0    Sl+    0:00 ./redis-server 127.0.0.1:6379
1446 pts/1    S+     0:00 grep redi


连接Redis服务

[root@qikk redis-stable]#./src/redis-cli -h 127.0.0.1 -p 6379
-h 表示连接者的IP地址
-p 表示要连接redis的端口号


关闭Redis服务

就是关掉redis进程
[root@qikk redis-stable]# kill -9 1442


Redis命令集

关于Key的操作

1.SET key value [EX seconds] [PX milliseconds] [NX|XX] 设置一个key
127.0.0.1:6379> SET gender male
OK


2.GET key 获得一个key
127.0.0.1:6379> GET gender
"male"


3.EXISTS key [key ...] 查看Key是否存在
127.0.0.1:6379> EXISTS zhangsan
(integer) 0


4.DEL key [key ...] 删除指定的 keys
127.0.0.1:6379> DEL name age
(integer) 2


5.TYPE key 判断key的类型
127.0.0.1:6379> TYPE name
string


6.KEYS pattern 使用* [] - ^通配符号匹配对应的key
127.0.0.1:6379> KEYS *a*
1) "name"
2) "age"

注:n?me 匹配 name, nxme,nbme...
n*me 匹配 nme,name,naaaame...
n[ae]me 匹配 name 和 neme 选择一个
n[^a]me 匹配 nbme, ncme..., 不匹配 name
n[a-b]me 匹配 name 和 nbme
使用 \ 转义特殊字符.


7.RANDOMKEY 随机访问当前库中的key
127.0.0.1:6379> RANDOMKEY
"age"
127.0.0.1:6379> RANDOMKEY
"name"
127.0.0.1:6379> RANDOMKEY
"name"


8.RENAME key newkey 修改key的名称
127.0.0.1:6379> RENAME name name2
OK
127.0.0.1:6379> exists name2
(integer) 1


9.RENAMENX key newkey 修改key的名字,如果已存在就不修改
127.0.0.1:6379> RENAMENX name2 name
(integer) 1
127.0.0.1:6379> RENAMENX name age
(integer) 0


10.EXPIRE key seconds 指定某一个key的过期时间以秒为单位
127.0.0.1:6379> EXPIRE name 60
(integer) 1


11.PEXPIRE key milliseconds 指定某一个key的过期时间以毫秒为单位
127.0.0.1:6379> PEXPIRE age 60000
(integer) 1


12.TTL key 查看key是否过期返回秒,永不过期则返回-1
127.0.0.1:6379> TTL name
(integer) 41
127.0.0.1:6379> TTL age
(integer) -1


13.TTL key 查看key是否过期返回毫秒,永不过期则返回-1
127.0.0.1:6379> PTTL age
(integer) 33168


14.PERSIST key 删除key的过期时间
127.0.0.1:6379> PERSIST age
(integer) 1
127.0.0.1:6379> PTTL age
(integer) -1


15.SELECT index 选择数据库index表示数据库下标默认值,可选值0~15(可配)
127.0.0.1:6379> SELECT 0
OK


16.MOVE key db 移动key到指定数据库
127.0.0.1:6379> SELECT 0
OK
127.0.0.1:6379> GET name
"zhangSan"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> GET name
(nil)
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> MOVE name 1
(integer) 1
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> GET name
"zhangSan"


关于Value的操作

String 类型

1.SET key value 保存 k-v
127.0.0.1:6379> SET user qikk
OK


2.SETNX key value 当key不存在时候 保存k-v
127.0.0.1:6379> SETNX user qikk
(integer) 0
127.0.0.1:6379> SETNX name zhangSan
(integer) 1


3.GET key 获取指定key的值
127.0.0.1:6379> GET user
"qikk"


4.GETSET key value 获取值并且赋新值
127.0.0.1:6379> GETSET user kkqi
"qikk"
127.0.0.1:6379> GET user
"kkqi"


5.MSET key value [key value ...] 一次性设置多个k-v
127.0.0.1:6379> MSET user qikk name zhangSan
OK
127.0.0.1:6379> KEYS *
1) "name"
2) "user"


6.MGET key [key ...] 一次性获取多这个值
127.0.0.1:6379> MGET user name
1) "qikk"
2) "zhangSan"


7.MSETNX key value [key value ...] 次性设置多个k-v,如果存在就放弃
127.0.0.1:6379> MSETNX user qikk age 18
(integer) 0
127.0.0.1:6379> MSETNX age 18 gender male
(integer) 1


8.INCR key 给指定的key加1
127.0.0.1:6379> GET age
"18"
127.0.0.1:6379> INCR age
(integer) 19
127.0.0.1:6379> GET age
"19"


9.DECR key 给指定的key减1
127.0.0.1:6379> GET age
"19"
127.0.0.1:6379> DECR age
(integer) 18
127.0.0.1:6379> GET age
"18"


10.INCRBY key value 给指定的key值增加value
127.0.0.1:6379> GET age
"18"
127.0.0.1:6379> INCRBY age 10
(integer) 28
127.0.0.1:6379> GET age
"28"


11.DECRBY key value 给指定的key值减去value
127.0.0.1:6379> GET age
"28"
127.0.0.1:6379> DECRBY age 10
(integer) 18
127.0.0.1:6379> GET age
"18"


    12.STRLEN key 获取指定key-value的长度
127.0.0.1:6379> STRLEN user
(integer) 4
127.0.0.1:6379> GET user
"qikk"


13.SETRANGE key offset value 覆盖指定值
127.0.0.1:6379> GET user
"qikk"
127.0.0.1:6379> SETRANGE user 0 kk
(integer) 4
127.0.0.1:6379> GET user
"kkkk"


14.APPEND key value 追加
127.0.0.1:6379> GET user
"qikk"
127.0.0.1:6379> APPEND user lovejava
(integer) 12
127.0.0.1:6379> GET user
"qikklovejava"


List操作

1.LPUSH/RPUSH key value [value ...] 存储值(LPUSH将某个值加入到一个key列表头部,RPUSH将某个值加入到一个key列表末尾)
LPUSH:
127.0.0.1:6379> LPUSH user qikk zhangSan liSi
(integer) 3
127.0.0.1:6379> LRANGE user 0 2
1) "liSi"
2) "zhangSan"
3) "qikk"
RPUSH:
127.0.0.1:6379> RPUSH user wangWu
(integer) 4
127.0.0.1:6379> LRANGE user 0 3
1) "liSi"
2) "zhangSan"
3) "qikk"
4) "wangWu"


2.LRANGE key start stop 遍历指定下标内的元素 stop 等-1代表遍历所有
127.0.0.1:6379> LRANGE user 0 3
1) "liSi"
2) "zhangSan"
3) "qikk"
4) "wangWu"


3.LLEN key 计算list长度
127.0.0.1:6379> LLEN user
(integer) 4


4.LINDEX key index 获取指定下标元素
127.0.0.1:6379> LINDEX user 0
"liSi"
127.0.0.1:6379> LINDEX user 3
"wangWu"


5.LSET key index value 修改指定位置的值
127.0.0.1:6379> LINDEX user 3
"wangWu"
127.0.0.1:6379> LSET user 3 zhaoLiu
OK
127.0.0.1:6379> LINDEX user 3
"zhaoLiu"


6.LREM key count value 删除指定数目的值
127.0.0.1:6379> LRANGE user 0 -1
1) "liSi"
2) "zhangSan"
3) "qikk"
4) "zhaoLiu"
5) "zhaoLiu"
127.0.0.1:6379> LREM user 5 zhaoLiu
(integer) 2


7.LINSERT key BEFORE|AFTER pivot value 在指定元素位置插入值
127.0.0.1:6379> LRANGE user 0 -1
1) "liSi"
2) "zhangSan"
3) "qikk"
127.0.0.1:6379> LINSERT user before qikk wangWu
(integer) 4
127.0.0.1:6379> LRANGE user 0 -1
1) "liSi"
2) "zhangSan"
3) "wangWu"
4) "qikk"


8.LPOP/RPOP key 弹出元素
127.0.0.1:6379> LRANGE user 0 -1
1) "liSi"
2) "zhangSan"
3) "wangWu"
4) "qikk"
127.0.0.1:6379> LPOP user
"liSi"
127.0.0.1:6379> RPOP user
"qikk"


9.LTRIM key start stop 保留子集
127.0.0.1:6379> LRANGE user 0 -1
1) "zhangSan"
2) "wangWu"
3) "qikk"
127.0.0.1:6379> LTRIM user 0 1
OK
127.0.0.1:6379> LRANGE user 0 -1
1) "zhangSan"
2) "wangWu"


Set 操作

1.SADD key member [member ...] 为集合添加元素
127.0.0.1:6379> SADD user qikk zhangSan liSi
(integer) 3


2.SMEMBERS key 显示集合中所有元素 (无序)
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"


3.SCARD key 计算元素数量
127.0.0.1:6379> SCARD user
(integer) 3


4.SDIFF key [key ...] 计算集合差集
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SMEMBERS user1
1) "whangWu"
2) "zhangSan"
127.0.0.1:6379> SDIFF user user1
1) "qikk"
2) "liSi"


5.SDIFFSTORE destination key [key ...] 存储差集
127.0.0.1:6379> SDIFFSTORE user2 user user1
(integer) 2
127.0.0.1:6379> SMEMBERS user2
1) "qikk"
2) "liSi"


6.SINTER key [key ...] 计算交集
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SMEMBERS user1
1) "whangWu"
2) "zhangSan"
127.0.0.1:6379> SINTER user user1
1) "zhangSan"


7.SINTERSTORE destination key [key ...] 存储交集
127.0.0.1:6379> SINTERSTORE user3 user user1
(integer) 1
127.0.0.1:6379> SMEMBERS user3
1) "zhangSan"


8.SISMEMBER key member 判断member是不是成员
127.0.0.1:6379> SISMEMBER user qikk
(integer) 1
127.0.0.1:6379> SISMEMBER user zhaoLiu
(integer) 0


9.SMOVE source destination member从一个集合中向另一个集合移动元素
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SMEMBERS user1
1) "whangWu"
2) "zhangSan"
127.0.0.1:6379> SMOVE user user1 liSi
(integer) 1
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
127.0.0.1:6379> SMEMBERS user1
1) "whangWu"
2) "zhangSan"
3) "liSi"


10.SPOP key [count] 弹出多少元素
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SPOP user 2
1) "zhangSan"
2) "qikk"
127.0.0.1:6379> SMEMBERS user
1) "liSi"


11.SRANDMEMBER key [count] 随机返回元素(不弹出)
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SRANDMEMBER user 2
1) "qikk"
2) "zhangSan"


12.SREM key member [member ...] 删除指定元素
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SREM user qikk
(integer) 1
127.0.0.1:6379> SMEMBERS user
1) "zhangSan"
2) "liSi"


13.SSCAN key cursor [MATCH pattern] [COUNT count] 查询遍历
127.0.0.1:6379> SSCAN user 0 COUNT 3
1) "0"
2) 1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SSCAN user 3 COUNT 3
1) "0"
2) 1) "liSi"


14.SUNION key [key ...] 求并集
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SMEMBERS user1
1) "zhangSan"
2) "liSi"
127.0.0.1:6379> SUNION user user1
1) "qikk"
2) "zhangSan"
3) "liSi"


15.SUNIONSTORE destination key [key ...] 存储并集的内容
127.0.0.1:6379> SMEMBERS user
1) "qikk"
2) "zhangSan"
3) "liSi"
127.0.0.1:6379> SMEMBERS user1
1) "zhangSan"
2) "liSi"
127.0.0.1:6379> SUNIONSTORE user5 user user1
(integer) 3
127.0.0.1:6379> SMEMBERS user5
1) "qikk"
2) "zhangSan"
3) "liSi"


SortedSet(ZSet) 类型 (不允许存在重复的数据,同时还可以通过分数排序)

1.ZADD key score member [[score member] [score member] ...]    添加一个有序集合元素
127.0.0.1:6379> ZADD user 80 qikk
(integer) 1


2.ZCARD users 计算总数
127.0.0.1:6379> ZCARD user
(integer) 2


3.ZCOUNT key min max 计算min和max之间的元素
127.0.0.1:6379> ZCOUNT user 80 100
(integer) 2


4.ZINCRBY key increment member 给某个特定元素加分 (元素不存在则添加元素)
127.0.0.1:6379> ZINCRBY user 10 zhangSan
"90"


5.ZRANGE key start stop [WITHSCORES]返回一个范围内的元素 使用withscore 显示分数
127.0.0.1:6379> ZRANGE user 0 -1
1) "liSi"
2) "qikk"
3) "zhangSan"
127.0.0.1:6379> ZRANGE user 0 -1 withscores
1) "liSi"
2) "10"
3) "qikk"
4) "80"
5) "zhangSan"
6) "90"


6.ZREVRANGE key start stop [WITHSCORES] 按分数从大到小显示元素
127.0.0.1:6379> ZREVRANGE user 0 -1
1) "zhangSan"
2) "qikk"
3) "liSi"
127.0.0.1:6379> ZREVRANGE user 0 -1 withscores
1) "zhangSan"
2) "90"
3) "qikk"
4) "80"
5) "liSi"
6) "10"


7.ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 分值分页查询
127.0.0.1:6379> ZRANGEBYSCORE user 0 100
1) "liSi"
2) "qikk"
3) "zhangSan"
127.0.0.1:6379> ZRANGEBYSCORE user 0 100 LIMIT 0 1
1) "liSi"
127.0.0.1:6379> ZRANGEBYSCORE user 0 100 WITHSCORES LIMIT 0 1
1) "liSi"
2) "10"


8.ZRANK key member 返回按照分数排名位置
127.0.0.1:6379> ZRANK user qikk
(integer) 1
127.0.0.1:6379> ZRANK user zhangSan
(integer) 2


9.ZREVRANK key member 倒序排名位置
127.0.0.1:6379> ZRANK user zhangSan
(integer) 2
127.0.0.1:6379> ZREVRANK user zhangSan
(integer) 0


10.ZREM key member [member ...] 删除元素
127.0.0.1:6379> ZRANGE user 0 -1
1) "liSi"
2) "qikk"
3) "zhangSan"
127.0.0.1:6379> ZREM user zhangSan
(integer) 1
127.0.0.1:6379> ZRANGE user 0 -1
1) "liSi"
2) "qikk"


11.ZREMRANGEBYRANK key start stop 根据排名删除数据
127.0.0.1:6379> ZRANGE user 0 -1
1) "liSi"
2) "zhangSan"
3) "wangWu"
4) "zhaoLiu"
5) "qikk"
127.0.0.1:6379> ZREMRANGEBYRANK user 0 1
(integer) 2
127.0.0.1:6379> ZRANGE user 0 -1
1) "wangWu"
2) "zhaoLiu"
3) "qikk"


12.ZREMRANGEBYSCORE key min max 根据分数删除元素
127.0.0.1:6379> ZRANGE user 0 -1 WITHSCORES
1) "liSi"
2) "30"
3) "wangWu"
4) "60"
5) "zhaoLiu"
6) "70"
7) "qikk"
8) "80"
9) "zhangSan"
10) "80"
127.0.0.1:6379> ZREMRANGEBYSCORE user 10 50
(integer) 1
127.0.0.1:6379> ZRANGE user 0 -1 WITHSCORES
1) "wangWu"
2) "60"
3) "zhaoLiu"
4) "70"
5) "qikk"
6) "80"
7) "zhangSan"
8) "80"


13.ZSCAN key cursor [MATCH pattern] [COUNT count] 扫描
127.0.0.1:6379> ZSCAN user 0 MATCH zh*
1) "0"
2) 1) "zhaoLiu"
2) "70"
3) "zhangSan"
4) "80"


14.ZSCORE key member 获取分数
127.0.0.1:6379> ZSCORE user qikk
"80"


15.ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 合并
127.0.0.1:6379> ZRANGE user 0 -1 WITHSCORES
1) "wangWu"
2) "60"
3) "zhaoLiu"
4) "70"
5) "qikk"
6) "80"
7) "zhangSan"
8) "80"

127.0.0.1:6379> ZRANGE user1 0 -1 WITHSCORES
1) "xiaohei"
2) "40"
3) "xiaobai"
4) "50"
5) "xiaohuang"
6) "60"

127.0.0.1:6379> ZUNIONSTORE users 2 user user1 WEIGHTS 1 1 AGGREGATE SUM
(integer) 7

127.0.0.1:6379> ZRANGE users 0 -1 WITHSCORES
1) "xiaohei"
2) "40"
3) "xiaobai"
4) "50"
5) "wangWu"
6) "60"
7) "xiaohuang"
8) "60"
9) "zhaoLiu"
10) "70"
11) "qikk"
12) "80"
13) "zhangSan"
14) "80"


Hash 类型

1.HSET key field value   设置一个K-V对  field是key
127.0.0.1:6379> HSET user users qikk
(integer) 1


2.HGET key field 获得一个key对应的value
127.0.0.1:6379> HGET user users
"qikk"


3.HGETALL key 获得所有k-v
127.0.0.1:6379> HGETALL user
1) "users"
2) "qikk"


4.HDEL key field [field ...] 删除某一个k-v对
127.0.0.1:6379> HDEL user users
(integer) 1


5.HEXISTS key field 判断一个key是否存在
127.0.0.1:6379> HEXISTS user users
(integer) 0
127.0.0.1:6379> HEXISTS user zs
(integer) 1


6.HKEYS key 获得所有key
127.0.0.1:6379> HKEYS user
1) "zs"
2) "qkk"
3) "ls"


7.HVALS key 获得所有value
127.0.0.1:6379> HVALS user
1) "zhangSan"
2) "qikk"
3) "liSi"


8.HMSET key field value [field value ...] 设置多个key/value
127.0.0.1:6379> HMSET user ww wangWu zl zhaoLiu
OK


9.HMGET key field [field ...] 获得多个key的value
127.0.0.1:6379> HMGET user ww zl
1) "wangWu"
2) "zhaoLiu"


10.HSETNX key field value 设置一个不存在的key的值,key存在不做任何改变**
127.0.0.1:6379> HSETNX user xh xiaoHei
(integer) 1
127.0.0.1:6379> HSETNX user xh xiaoHei
(integer) 0


11.HINCRBY key field increment 为value进行加法运算
127.0.0.1:6379> HINCRBY user age 10
(integer) 20


12.HINCRBYFLOAT key field increment 为value加上浮点数
127.0.0.1:6379> HINCRBYFLOAT user age 0.00
"20"
127.0.0.1:6379> HINCRBYFLOAT user age 0.9
"20.9"
127.0.0.1:6379> HINCRBYFLOAT user age 0.99
"21.89"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 数据库 高性能