一 下载安装
推荐到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