Redis官方入门命令导游学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fututadeyoushang/article/details/82698180

博客原文:
https://zhangxingr.github.io/2018/08/23/Redis%E5%AE%98%E6%96%B9%E5%85%A5%E9%97%A8%E5%91%BD%E4%BB%A4%E5%AF%BC%E6%B8%B8%E5%AD%A6%E4%B9%A0/#more

基础命令

存储key-value

set server:name “test”

set connections 10

根据key取出value

get server:name

get connections

根据key删除key-value

del connections

根据key对整型value做自增自减

incr connections

decr connections

如果key值不存在会创建一个key-value数据,value默认为1

为什么官方不做一些复杂操作来实现自增或自减的功能呢?

类似于这样的:

x = GET count
x = x + 1
SET count x

上面的方法只适合当只有一个客户端使用的时候,当多个客户端使用的时候就会出现问题:

Client A reads count as 10.
Client B reads count as 10.
Client A increments 10 and sets count to 11.
Client B increments 10 and sets count to 11.

我们想要的数据是count==12,为什么现在等于11呢?因为这个操作不是一个原子的操作,不能保证数据一致性。而用redis提供的incr或者是decr则可以避免这样事发生。Redis为不同的数据类型提供了多种原子操作。

指定key-value存在的时间,过了这个时间就会被自动删除

存储resource:lock

set resource:lock “Redis Demo”

设置resource:lock过期时间

expire resource:lock 120

查看resource:lock剩余过期时间

ttl resource:lock

这里有个小知识点:

ttl查看一个不存在key会返回-2

> ttl aa
(integer) -2

ttl查看一个没有设置过期时间的key会返回-1

> ttl server:name
(integer) -1

复杂数据类型

List

Redis也提供了几种复杂的数据类型,首先要提的就是list,一个有序列表。关于list需要记住几个重要的命令:

RPUSH, LPUSH, LLEN, LRANGE, LPOP, and RPOP.
rpush 向后push

向friends列表后面添加数据,如果friends不存在会创建

rpush friends “Alice”

lpush 向前push

向friends列表前面添加数据

lpush friends “Sam”

lpop 向前pop

从列表前面取出数据,注意pop动作是取出,也就是说列表中的数据也会被移除

lpop friends

rpop 向后pop

从列表后面取出数据

rpop friends

llen 取列表长度

llen friends

lrange 取列表的子集

lrange friends 0 1

如果lrange friends 0 -1像这样,第二个参数为-1,则表示从0取到列表的最后一个元素

Set

接下来我们要介绍的数据类型是Set。Set的结构与List类似,但是它不能排序并且不能有相同的值,关于Set的重要的命令有:

SADD, SREM, SISMEMBER, SMEMBERS and SUNION
sadd 新增元素,如果set集合不存在则会创建

sadd superpowers “hello”

sadd superpowers “world”

srem 删除元素

srem superpowers “hello”

sismember 测试指定元素是否存在

不存在返回0

sisimember superpowers “hello”

存在返回1

sismember superpowers “world”

smembers 查看set中的所有元素

smembers superpowers

sunion 联合两个或多个set并查看合成的值
sadd birdpowers "nihao"

sunion superpowers birdpowers

Sorted Sets

也许你认为set已经够用了很方便了,但是老铁,它不能排序呀,不能排序就少了很多功能了有木有。所以从Redis1.2开始引入了sorted sets。Sorted Sets可以理解为有规律的set,但是sorted sets中的每个值都有一个关联的数值。这个数值用来对set进行排序。

就像下面这样,每个值都要指定一个score以便排序

    ZADD hackers 1940 "Alan Kay"
    ZADD hackers 1906 "Grace Hopper"
    ZADD hackers 1953 "Richard Stallman"
    ZADD hackers 1965 "Yukihiro Matsumoto"
    ZADD hackers 1916 "Claude Shannon"
    ZADD hackers 1969 "Linus Torvalds"
    ZADD hackers 1957 "Sophie Wilson"
    ZADD hackers 1912 "Alan Turing"

Hashes

简单的字符串、Set或者Sorted Sets已经可以完成大部分任务了。Redis还能提供一种类型:Hashes。

Hashes are maps between string fields and string values, so they are the perfect data type to represent objects (eg: A User with a number of fields like name, surname, age, and so forth):(直接看官方解释吧,懒得翻译了,大意就是用来存储诸如用户实体这样的对象的)

怎么用呢?

hset 添加元素
使用方法如下:

    HSET user:1000 name "John Smith"
    HSET user:1000 email "john.smith@example.com"
    HSET user:1000 password "s3cret"
hgetall 查看所有元素
To get back the saved data use HGETALL:

    HGETALL user:1000
hget 查看指定元素
If you only need a single field value that is possible as well:

    HGET user:1001 name => "Mary Jones"

hash中还有许多命令可以帮助我们做原子操作:

    设置值:
    HSET user:1000 visits 10

    自增(原子操作):
    HINCRBY user:1000 visits 1 => 11
    HINCRBY user:1000 visits 10 => 21

    删除:
    HDEL user:1000 visits

    如果没有值则会创建一个值:
    HINCRBY user:1000 visits 1 => 1

参考

以上只是跟着redis官网给的导学内容学习到的,关于redis的更多内容还需要在工作中不断地去探索。。。

redis中文网

猜你喜欢

转载自blog.csdn.net/fututadeyoushang/article/details/82698180
今日推荐