redis入门基础

一 前言

知识追寻者的redis开篇第一篇,希望大家共勉;觉得文章不错,随手点赞关注谢谢;

先介绍一下redis概念:

Redis是一个开源的key-value存储系统,它属于NoSQL(Not Only SQL),不仅仅是关系型数据库;

再看看redis的优势:

  • 丰富的数据类型
  • 支持键过期特性
  • 每条指令都是原子性操作
  • 读写性能极高

初步了解一下redis的附加特性

  • 可以主存与二级存储,主从复制;
  • 支持数据持久化存储

linux 安装 redis 链接 : https://www.jianshu.com/p/bc84b2b71c1c

windows安装redis链接: https://www.jianshu.com/p/e16d23e358c0

docker 安装 redis 链接 https://juejin.im/post/5ca59dece51d4508b32a1292

最后生产环境中建议大家安装 redis 5.0.5 稳定版本

二 五大基础数据类型

2.1 字符串

字符串型数据存储为 key - val (键值对)形式,即每个 键都有对应唯一的值;如下图所示,age 为 key 则对应唯一的值为18;

命令介绍如下

  1. get : 获取存储给定键的值
  2. set : 设置给定存储键的值
  3. del : 删除给定键的值
  4. incr :计数,每次加1
  5. incrby : 计算,给定值加减
  6. mset : 设置多个键值
  7. mget : 获取多个给定键的值
  8. expire : 设置过期时间(适用所有类型)
  9. exists : 是否存在键

存储字符串示例

set key value

127.0.0.1:6379> set zszxz 666
OK

获取字符串示例

get key

127.0.0.1:6379> get zszxz
"666"

删除字符串示例

del key [key ...]

127.0.0.1:6379> del zszxz
(integer) 1

计数示例:

incr key

127.0.0.1:6379> set age 100
OK
127.0.0.1:6379> incr age
(integer) 101
127.0.0.1:6379> incr age
(integer) 102
127.0.0.1:6379> get age
"102"
127.0.0.1:6379>

incrby key increment

127.0.0.1:6379> set age 100
OK
127.0.0.1:6379> incrby age 5
(integer) 105
127.0.0.1:6379> incrby age -2
(integer) 103
127.0.0.1:6379> get age
"103"
127.0.0.1:6379>

多键值对示例

mset key value [key value ...]

mget key [key ...]

127.0.0.1:6379> mset u1 you1 u2 you2
OK
127.0.0.1:6379> mget u1 u2
1) "you1"
2) "you2"
127.0.0.1:6379>

设置过期时间

expire key seconds

127.0.0.1:6379> expire u1 1
(integer) 1
127.0.0.1:6379> get u1
(nil)
127.0.0.1:6379>

存在示例

exists key [key ...]

127.0.0.1:6379> set age 100
OK
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379>

2.2 列表

列表其实就是链表,一个列表有一个键,一个键对应多个值,值可以重复,取值时根据索引取值即可;

  1. rpush : 将值推入列表右端
  2. lrange : 获取列表给定范围内所有的值
  3. lindex : 获取列表上给定位置的单个元素
  4. lpop : 从列表的左端弹出一个值

值入列表示例

rpush key value [value ...]

127.0.0.1:6379> rpush list-zszxz a
(integer) 1
127.0.0.1:6379> rpush list-zszxz b
(integer) 2
127.0.0.1:6379> rpush list-zszxz c
(integer) 3

范围取值示例

lrange key start stop

127.0.0.1:6379> lrange list-zszxz 0 -1
1) "a"
2) "b"
3) "c"

给定索引取值示例

lindex key index

127.0.0.1:6379> lindex list-zszxz 1
"b"

左弹出示例

lpop key

127.0.0.1:6379> lpop list-zszxz
"a"
127.0.0.1:6379>  lrange list-zszxz 0 -1
1) "b"
2) "c"

2.3 集合

集合与列表类似,不过特殊指出是集合无序,并且每个值都是唯一,不可重复;

  1. sadd : 将给定的值加入集合
  2. smembers : 返回集合所有的元素
  3. sismember : 检查给定的元素是否存在集合中
  4. srem : 若集合中存在该元素,则移除该元素

添加示例

sadd key member [member ...]

127.0.0.1:6379> sadd set-zszxz a
(integer) 1
127.0.0.1:6379> sadd set-zszxz b
(integer) 1
127.0.0.1:6379> sadd set-zszxz c
(integer) 1

返回所有元素示例

smembers key

127.0.0.1:6379> smembers set-zszxz
1) "c"
2) "b"
3) "a"

存在示例

sismember key member

127.0.0.1:6379> sismember set-zszxz c
(integer) 1

删除示例

srem key member [member ...]

127.0.0.1:6379> srem set-zszxz a
(integer) 1
127.0.0.1:6379> smembers set-zszxz
1) "c"
2) "b"

2.4 散列

散列点像java中的map,python中的字典;一个散列里面存储多个键值对;

  1. hset : 给定散列的键值对
  2. hget : 获取指定散列键的值
  3. hetall : 获取所有散列的键值对
  4. hdel : 若散列中存在该键,则移除键

设置散列键值对示例

hset key field value

127.0.0.1:6379> hset hash-key key1 a
(integer) 1
127.0.0.1:6379> hset hash-key key2 b
(integer) 1
127.0.0.1:6379> hset hash-key key3 c
(integer) 1
127.0.0.1:6379>

获取散列给定键示例

hget key field

127.0.0.1:6379> hget hash-key key1
"c"

获取散列所有键值对示例

hgetall key

127.0.0.1:6379> hgetall hash-key
1) "key1"
2) "c"
3) "key2"
4) "b"
5) "key3"
6) "c"

删除散列键示例

hdel key field [field ...]

127.0.0.1:6379> hdel hash-key key1
(integer) 1
127.0.0.1:6379> hgetall hash-key
1) "key2"
2) "b"
3) "key3"
4) "c"
127.0.0.1:6379>

2.5 有序集合

redis 有序集合与散列类似,不同之处键称为member, value称为 score ; 根据分值不同进行有序排序;

  1. zadd : 将带有给定分值的成员添加入有序集合
  2. zrange : 根据有序集合的索引获取元素
  3. zrangebyscore : 获取有序集合内给定分值范围内的所有元素
  4. zrem : 如果成员存在有序集合中,则移除

添加成员示例

zadd key score member [score member ...]

127.0.0.1:6379> zadd zset-key 600 member1
(integer) 1
127.0.0.1:6379> zadd zset-key 650 member2
(integer) 1
127.0.0.1:6379> zadd zset-key 680 member3
(integer) 1
127.0.0.1:6379>

获取指定索引范围内的成员示例

zrange key start stop [WITHSCORES]

不带score

127.0.0.1:6379> zrange zset-key 0 -1
1) "member1"
2) "member2"
3) "member3"

带上score

127.0.0.1:6379>  zrange zset-key 0 -1 withscores
1) "member1"
2) "600"
3) "member2"
4) "650"
5) "member3"
6) "680"

获取指定分值范围内的成员示例

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

127.0.0.1:6379> zrangebyscore zset-key 600 650 withscores
1) "member1"
2) "600"
3) "member2"
4) "650"

移除成员示例

zrem key member [member ...]

127.0.0.1:6379> zrem zset-key member1
(integer) 1
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member2"
2) "650"
3) "member3"
4) "680"
127.0.0.1:6379>

简记方式:

字符串, key - value

列表与集合 ,类似链表,一个有序,一个无序,一个键存储多个值;

散列与有序集合,类似字典,map;储存多个 key-value; 有序集合的key 为member, value 为 score ,按照分值排序;

posted @ 2020-03-13 14:23  知识追寻者  阅读(170)  评论(0编辑  收藏  举报