redis实战一、五种数据结构的基本操作

一 下载安装
推荐到redis中文网:http://www.redis.com.cn/ 下载,(国外redis官网https://redis.io/相对较慢,不推荐)
二 解压后,可以看到
作为redis客户端 的redis-cli.exe 和 作为redis服务器端redis-server.exe 。
三 双击redis-server.exe 便可打开redis本地服务器,同样打开客户端会话。
接下来是redis的5种数据结构的测试

1、string:字符串
2、hash:map格式
3、set :集合,不允许有重复元素
4、sortedset:不允许有重复元素,且有序的集合
5、list:列表类型,linkedlist格式,可以有重复元素
1、string:字符串,
保存key值:set key value ,
获取key值:get key
删除key值:del key
重复给同一个key赋值,会覆盖原来的值

在客户端会话键入字符串存值命令,保存为  yatou  然后获取一下,再次保存为abc,再次获取是abc,覆盖了原值,执行del 再次获取,发现为nil(该值在redis里的含义为空)
127.0.0.1:6379> set username 'yatou'   
OK
127.0.0.1:6379> get username
"yatou"
127.0.0.1:6379> set username 'abc'
OK
127.0.0.1:6379> get username
"abc"
127.0.0.1:6379> del username
(integer) 1
127.0.0.1:6379> get username
(nil)

2、hash:map格式
保存:hset mapName key value
查询:hget mapName key
删除:hdel mapName key
查询所有:hgetall mapName
eg:保存

 127.0.0.1:6379> hset  myhashmap  greeting  'hello'
(integer) 1

查询

127.0.0.1:6379> hget myhashmap greeting
"hello"
127.0.0.1:6379> hset myhashmap dog 'wangcai'
(integer) 1
127.0.0.1:6379> hset myhashmap cat 'tom'
(integer) 1

获取map所有值

127.0.0.1:6379> hgetall myhashmap
1) "greeting"
2) "hello"
3) "dog"
4) "wangcai"
5) "cat"
6) "tom"

删除一个entry

127.0.0.1:6379> hdel myhashmap cat
(integer) 1
127.0.0.1:6379> hgetall myhashmap
1) "greeting"
2) "hello"
3) "dog"
4) "wangcai"

3、set :集合
存储:sadd key value1 [value2 value3…]
存储时不允许有重复元素,比如保存a1到myset集合中

redis 127.0.0.1:6379> sadd myset a1
(integer) 1-- 表示存储成功

再次保存a1,则会显示保存失败

redis 127.0.0.1:6379> sadd myset a1
(integer) 0  -- 表示存储失败

多个值同时保存,eg:保存 a2 a3 a4

redis 127.0.0.1:6379> sadd myset a2 a3 a4
(integer) 3 -- 表示存储成功3个值

获取:smembers key ,eg:获取set集合里所有元素,由此可发现他是无序的

redis 127.0.0.1:6379> smembers myset
1) "a4"
2) "a2"
3) "a3"
4) "a1"

删除:srem key value;

redis 127.0.0.1:6379> srem myset a2
(integer) 1
redis 127.0.0.1:6379> smembers myset
1) "a4"
2) "a3"
3) "a1"

4、sortedset:不允许有重复元素,且有序的集合
存储:zadd key score value,默认对score进行排序

redis 127.0.0.1:6379> zadd mysortedset 80 zhangsan
(integer) 1
redis 127.0.0.1:6379> zadd mysortedset 120 lisi
(integer) 1
redis 127.0.0.1:6379> zadd mysortedset 39 wangwu
(integer) 1

获取所有value值

redis 127.0.0.1:6379> zrange mysortedset 0 -1
1) "wangwu"
2) "zhangsan"
3) "lisi"
redis 127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wangwu"
2) "39"
3) "zhangsan"
4) "80"
5) "lisi"
6) "120"

不允许有重复元素,比如再次添加王五的分数,则不会成功,删除后再次添加王五及其分数,则会成功

redis 127.0.0.1:6379> zadd mysortedset 137 wangwu
(integer) 0  -- 表示添加失败
redis 127.0.0.1:6379> zrem mysortedset wangwu
(integer) 1 -- 表示删除成功
redis 127.0.0.1:6379> zadd mysortedset 137 wangwu
(integer) 1  -- 表示添加成功

获取范围,会看到王五的分数有改动

redis 127.0.0.1:6379> zrange mysortedset 0 -1
1) "zhangsan"
2) "lisi"
3) "wangwu"
redis 127.0.0.1:6379>  zrange mysortedset 0 -1 withscores
1) "zhangsan"
2) "80"
3) "lisi"
4) "120"
5) "wangwu"
6) "137"

5、list:列表类型,linkedlist格式,可以有重复元素
添加元素到列表头部(左边)或者尾部(右边)
添加:
lpush list value:添加元素至列表最左边 ,先进后厨
rpush list value:添加元素至列表最右边,后进后出
范围获取:
lrange list start end
删除:
lpop list value:删除列表最左边元素,并且返回该删除的元素值
rpop list value:删除列表最右边元素,并且返回该删除的元素值
避免枯燥,图文结合更便于我的理解记忆
在这里插入图片描述
添加a1元素至列表mylinklist最左边

redis 127.0.0.1:6379> lpush mylinklist a1    
(integer) 1

添加a2元素至列表mylinklist最左边,此时a1被压入里面,a1在列表左边第二个元素的位置

redis 127.0.0.1:6379> lpush mylinklist a2
(integer) 2

添加b1元素至列表mylinklist最右边

redis 127.0.0.1:6379> rpush mylinklist b1
(integer) 3

添加b2元素至列表mylinklist最右边,此时b1被压入里面,b1在列表右边倒数第二个元素的位置

redis 127.0.0.1:6379> rpush mylinklist b2
(integer) 4

获取mylinklist所有元素,可直观看到最先获取的是a2,最后获取的是b2

redis 127.0.0.1:6379> lrange mylinklist 0 -1
1) "a2"
2) "a1"
3) "b1"
4) "b2"

删除mylinklist最左边的一个元素,并且返回删除元素的值

redis 127.0.0.1:6379> lpop mylinklist
"a2"

删除mylinklist最右边的一个元素,并且返回删除元素的值b2

redis 127.0.0.1:6379> rpop mylinklist
"b2"

再次获取mylinklist链表全部元素,可看到只有a1和b1.

redis 127.0.0.1:6379> lrange mylinklist 0 -1
1) "a1"
2) "b1"

关于redis,想了解可以参看:http://www.redis.net.cn/tutorial/3501.html

猜你喜欢

转载自blog.csdn.net/qq_17033579/article/details/88211018