手撸代码,如有错误请联系QQ:2567828851
下载、安装、使用:
想要windows版本的小伙伴可以到【这里】去下载
1.linux版本直接用几条命令来下载,解压,和编译吧
Sanqiushu:~$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
Sanqiushu:~$ tar xzf redis-5.0.3.tar.gz
Sanqiushu:~$ cd redis-5.0.3
Sanqiushu:~/redis-5.0.3$ make
2.编译完成后进入src目录使用启动服务端
Sanqiushu:~/redis-5.0.3$ cd src
Sanqiushu:~/redis-5.0.3/src$ ./redis-server
windows端的可以在cmd中输入 redis-server 来启动服务端(如果安装的时候没有点加入环境变量的话可以进入安装目录下的src目录按Shift+鼠标右键选择打开PowerShell或cmd然后执行命令)
3.进入相应目录打开客户端连接
Sanqiushu:~$ cd redis-5.0.3/
Sanqiushu:~/redis-5.0.3$ ./src/redis-cli
127.0.0.1:6379>
String类型对应操作
set -- 设置一个键对应的值(键不存在会被创建)
用法:
set key value [expiration EX seconds|PX milliseconds] [NX|XX]
EX 是指暂存时间(秒)
例如:
127.0.0.1:6379> set animal 'Cat'
OK
get -- 得到一个键对应的值
用法:
get key
例如:
127.0.0.1:6379> get animal
"Cat"
append -- 为一个键对应的值进行拼接
用法:
append key value
例子:
127.0.0.1:6379> append animal ' Dog'
(integer) 7
127.0.0.1:6379> get animal
"Cat Dog"
127.0.0.1:6379>
mset -- 设置多个键的值(键不存在会被创建)
用法:
mset key value [key value ...]
例子:
127.0.0.1:6379> mset user1 'xiaoming' user2 'lilei'
OK
127.0.0.1:6379>
mget -- 获取键对应的值
用法:
mget key [key ...]
例子:
127.0.0.1:6379> mget user1 user2 animal
1) "xiaoming"
2) "lilei"
3) "Cat Dog"
127.0.0.1:6379>
del -- 删除一个键值对
用法:
del key [key ...]
例子:
127.0.0.1:6379> del user2
(integer) 1
127.0.0.1:6379>
incr、decr 自增 、自减
用法:
incr key
decr key
例子:
127.0.0.1:6379> set num 8
OK
127.0.0.1:6379> incr num
(integer) 9
127.0.0.1:6379> decr num
(integer) 8
127.0.0.1:6379>
List对应操作
lpush -- 从左插入一个数据(从队列头部插入一个数据)
用法:
lpush key value [value ...]
例子:
127.0.0.1:6379> lpush q1 'Jhon' 'Cat' 'Amy'
(integer) 3
rpush -- 从右插入一个数据(从队列尾部插入一个数据)
用法:
rpush key value [value ...]
例子:
127.0.0.1:6379> rpush q1 'Bob'
(integer) 4
llen -- 查看队列长度
用法:
llen key
例子:
127.0.0.1:6379> llen q1
(integer) 4
127.0.0.1:6379>
lrange -- 查看队列内容
用法:
lrange key start stop
例子:
127.0.0.1:6379> lrange q1 0 -1
1) "Amy"
2) "Cat"
3) "Jhon"
4) "Bob"
与python类似-1代表倒数第一位,也就是最后一个
lpushx -- 向存在的列表中左插入一个值(插入不存在的列表时不做任何操作)
用法:
lpushx key value
例子:
127.0.0.1:6379> lpushx q1 'zhang'
(integer) 5
127.0.0.1:6379> lrange q1 0 -1
1) "zhang"
2) "Amy"
3) "Cat"
4) "Jhon"
5) "Bob"
127.0.0.1:6379> lpushx q2 'zhang'
(integer) 0
127.0.0.1:6379>
rpushx -- 向存在的列表中右插入一个值(插入不存在的列表时不做任何操作)
略
ltrim -- 左截取一定长度的列表(剩下的删除)
用法:
ltrim key start stop
例子:
127.0.0.1:6379> ltrim q1 0 2
OK
127.0.0.1:6379> lrange q1 0 -1
1) "zhang"
2) "Amy"
3) "Cat"
127.0.0.1:6379>
lpop -- 左删除列表中的一个值
用法:
lpop key
例子:
127.0.0.1:6379> lpop q1
"zhang"
127.0.0.1:6379> lrange q1 0 -1
1) "Amy"
2) "Cat"
127.0.0.1:6379>
rpop -- 右删除列表中的一个值
略
Set类型相关操作
sadd -- 向集合中加入元素
用法:
sadd key member [member ...]
例子:
127.0.0.1:6379> sadd zoo Cat Dog
(integer) 2
127.0.0.1:6379>
这里的Cat 和 Dog 可以不加引号
smembers -- 查看集合中的元素
用法:
smembers key
例子:
127.0.0.1:6379> smembers zoo
1) "Dog"
2) "Cat"
127.0.0.1:6379>
srem -- 从集合中移除元素
用法:
srem key member [member ...]
例子:
127.0.0.1:6379> srem zoo Cat
(integer) 1
127.0.0.1:6379>
sismember -- 查看某个值是否在某个集合中
用法:
sismember key member
例子:
127.0.0.1:6379> sismember zoo Dog
(integer) 1
127.0.0.1:6379> sismember zoo Cat
(integer) 0
127.0.0.1:6379>
1 代表存在,0 代表不存在
sdiff -- 比较集合间的不同(以第一个集合为基准)
用法:
sdiff key [key ...]
例子:
127.0.0.1:6379> smembers zoo
1) "Dog"
2) "Cat"
127.0.0.1:6379> smembers zoo1
1) "Cow"
2) "Cat"
127.0.0.1:6379> sdiff zoo zoo1
1) "Dog"
127.0.0.1:6379>
先查看zoo 、zoo1里有什么,再比较一下不同
sinter -- 计算集合的交集
用法:
sinter key [key ...]
例子:
127.0.0.1:6379> sinter zoo zoo1
1) "Cat"
127.0.0.1:6379>
sunion -- 计算集合的并集
用法:
sunion key [key ...]
例子:
127.0.0.1:6379> sunion zoo zoo1
1) "Cow"
2) "Dog"
3) "Cat"
127.0.0.1:6379>
Hash相关操作
hset/hget -- 设置/获取散列值
用法:
hset key field value
hget key field
例子:
127.0.0.1:6379> hset news:1 title 'News Title'
(integer) 1
127.0.0.1:6379> hset news:1 content 'News Content'
(integer) 1
127.0.0.1:6379> hget news:1 title
"News Title"
127.0.0.1:6379> hget news:1 content
"News Content"
这里(news:1)是一个整体,在这里作为key
hmset/hmget -- 设置/获取多对散列值
用法:
hmset key field value [field value ...]
hmget key field [field ...]
例子:
127.0.0.1:6379> hmset news:2 title 'Title2' content 'Content2' is_valid 1
OK
127.0.0.1:6379> hmget news:2 title content is_valid
1) "Title2"
2) "Content2"
3) "1"
127.0.0.1:6379>
hsetnx -- 如果散列值已经存在,则不设置
用法:
hsetnx key field value
例子:
127.0.0.1:6379> hget news:2 is_valid
"1"
127.0.0.1:6379> hsetnx news:2 is_valid 2
(integer) 0
127.0.0.1:6379> hget news:2 is_valid
"1"
127.0.0.1:6379>
hkeys/hvals -- 返回所有Keys/Values
用法:
hkeys key
hvals key
例子:
127.0.0.1:6379> hkeys news:1
1) "title"
2) "content"
127.0.0.1:6379>
127.0.0.1:6379> hvals news:2
1) "Title2"
2) "Content2"
3) "1"
127.0.0.1:6379>
hlen -- 返回散列包含域(field)的数量
用法:
hlen key
例子:
127.0.0.1:6379> hlen news:2
(integer) 3
127.0.0.1:6379>
hdel -- 删除散列指定的域(field)
用法:
hdel key field [field ...]
例子:
127.0.0.1:6379> hdel news:2 is_valid
(integer) 1
127.0.0.1:6379>
hexists --判断散列是否存在
用法:
hexists key field
例子:
127.0.0.1:6379> hexists news:2 is_valid
(integer) 0
127.0.0.1:6379>
网友评论