redis学习(一)-数据结构及简单应用

由于最近公司的nosql开始由dba接手,所以要搞起来了。

redis基本数据结构:

一、String 字符串类型

是redis中最基本的数据类型,一个key对应一个value。

字符串命令:

    1.get、获取存储在指定键中的值

    2.set、设置存储在指定键中的值

    3.del、删除存储在指定键中的值(这个命令可以用于所有的类型)

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1

 

二、列表(list)

    一个链表结构可以有序的存储多个字符串。

列表命令:

    1.lpush、将给定值推入列表的左端

    2.rpush、将给定值推入列表的右端

    3.lrange、获取列表在指定范围上的所有值

    4.lindex、获取列表在指定范围上的单个元素

    5.lpop、从列表的左端弹出一个值,并返回被弹出的值

    6.rpop、从列表的右端弹出一个值,并返回被弹出的值

127.0.0.1:6379> lpush list-test test1
(integer) 3
127.0.0.1:6379> lpush list-test test2
(integer) 4
127.0.0.1:6379> lrange list-test 0 1
1) "test2"
2) "test1"
127.0.0.1:6379> lrange list-test 0 -1
1) "test2"
2) "test1"
3) "test2"
4) "test4"
127.0.0.1:6379> rpush list-test test4
(integer) 5
127.0.0.1:6379> rpop list-test
"test4"
127.0.0.1:6379> lpop list-test
"test2"
127.0.0.1:6379> lindex list-test 0
"test1"

3.集合(set)

集合和列表都可以存储多个字符串,不同之处在于,列表可以存储多个相同的字符串,而集合则通过使用散列表来保证自己存储的每个字符串都是各不相同的

集合命令:

    1.sadd、将给定值插入到集合中,成功返回1,失败返回0(可能是集合中已经有要插入的元素)

    2.srem、从集合中删除指定元素

    3.sismember、查看置顶元素是否在集合中

    4.smembers、获取集合中所有元素(从获取的结果也能看出来集合是无序的)

127.0.0.1:6379> smembers set-test
(empty array)
127.0.0.1:6379> sadd set-test test
(integer) 1
127.0.0.1:6379> sadd set-test test
(integer) 0
127.0.0.1:6379> sadd set-test test1
(integer) 1
127.0.0.1:6379> sadd set-test test2
(integer) 1
127.0.0.1:6379> sadd set-test test3
(integer) 1
127.0.0.1:6379> sismember set-test test4
(integer) 0
127.0.0.1:6379> sadd set-test test4
(integer) 1
127.0.0.1:6379> sismember set-test test4
(integer) 1
127.0.0.1:6379> smembers set-test
1) "test3"
2) "test2"
3) "test1"
4) "test"
5) "test4"
127.0.0.1:6379> srem set-test test3
(integer) 1
127.0.0.1:6379> smembers set-test
1) "test2"
2) "test"
3) "test1"
4) "test4"

 

4、散列(hash)

散列可以存储多个键值对之间的映射,和字符串一样,散列存储的值既可以是字符串,又可以是数字值,并且用户同样可以对散列存储的数字值进行自增操作或者自减操作

散列命令:

    1.hset、将给定的键值对插入到散列中,如果插入的键与散列中已有的键相同,而值不同,那么后者的值会覆盖前者。

    2.hget、读取散列中指定键的值

    3.hgetall、读取散列中所有的键值对

    4.hdel、删除散列中指定的键值对

127.0.0.1:6379> hset hash-test hkey1 hvalue1
(integer) 1
127.0.0.1:6379> hset hash-test hkey1 hvalue1
(integer) 0
127.0.0.1:6379> hset hash-test hkey1 hvalue2
(integer) 0
127.0.0.1:6379> hset hash-test hkey2 hvalue1
(integer) 1
127.0.0.1:6379> hgetall hash-test
1) "hkey1"
2) "hvalue2"
3) "hkey2"
4) "hvalue1"
127.0.0.1:6379> hget hash-test hkey1
"hvalue2"
127.0.0.1:6379> hget hash-test hkey2
"hvalue1"
127.0.0.1:6379> hset hash-test hkey2 hvalue4
(integer) 0
127.0.0.1:6379> hget hash-test hkey2
"hvalue4"
127.0.0.1:6379> hdel hash-test key1
(integer) 0
127.0.0.1:6379> hgetall hash-test
1) "hkey1"
2) "hvalue2"
3) "hkey2"
4) "hvalue4"
127.0.0.1:6379> hdel hash-test hkey1
(integer) 1
127.0.0.1:6379> hgetall hash-test
1) "hkey2"
2) "hvalue4"

5、有序集合(zset)

有序集合和散列一样,都用于存储键值对,有序集合的键被称为成员,每个成员都是独一无二的,而有序集合的值被称为分值,分值必须为浮点数。有序集合是redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素的结构

有序集合命令:

    1.zadd、将给定的键值对插入到有序集合中,第一个参数是分值,第二个参数是键值,同样,相同的键值,后者分值会覆盖前者。

    2.zrange、读取有序集合的键值,加上withscores,就会读取键值和分值

    3.zrem、删除有序集合中指定的键值对

    4.zrangebyscore、按照分值的范围读取有序集合

127.0.0.1:6379> zadd zset-test 728 test1
(integer) 1
127.0.0.1:6379> zadd zset-test 663 test
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1
1) "member1"
2) "member2"
3) "member0"
127.0.0.1:6379> zrange zset-test 0 -1
1) "test"
2) "test1"
127.0.0.1:6379> zrange zset-test 0 -1 withscores
1) "test"
2) "663"
3) "test1"
4) "728"
127.0.0.1:6379> zadd zset-test test2 84
(error) ERR value is not a valid float
127.0.0.1:6379> zadd zset-test 84 test2
(integer) 1
127.0.0.1:6379> zadd zset-test 84 test3
(integer) 1
127.0.0.1:6379> zrange zset-test 0 -1 withscores
1) "test2"
2) "84"
3) "test3"
4) "84"
5) "test"
6) "663"
7) "test1"
8) "728"
127.0.0.1:6379> zrem zset-test test
(integer) 1
127.0.0.1:6379> zrem zset-test 84
(integer) 0
127.0.0.1:6379> zrangebyscore zset-key 0 -1
(empty array)
127.0.0.1:6379> zrangebyscore zset-test 0 -1
(empty array)
127.0.0.1:6379> zrangebyscore zset-test 0 800
1) "test2"
2) "test3"
3) "test1"
127.0.0.1:6379> zrangebyscore zset-test 0 800 withscores
1) "test2"
2) "84"
3) "test3"
4) "84"
5) "test1"
6) "728"

以上就是对redis五种数据结构的简单介绍和使用,后续文章会写较为复杂的应用,运维,以及实际场景的应用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值