Redis基本用法(一)
Redis安装
略
启动Redis
服务端
1 | $ redis-server |
客户端
1 | $ redis-cli |
远程连接时(远程主机的防火墙要配置好,否则会拒绝连接)
1 | $ redis-cli -h $HOST_NAME -p $PORT -a $PASSWORD |
Redis的键:
格式
1 | redis 127.0.0.1:6379> COMMAND KEY_NAME |
命令是不分大小写的,键的名字则要区分大小写
如SET myKey
和set myKey
和sEt myKey
都是一回事
但SET myKey
和SET MyKey
则不一样
常见用法
SET key value
– 为键设置一个值,其中value加不加引号是一样的,不过要想存储引号的时候value必须加引号并且将字符串中的引号加反斜杠\进行转义GET key
– 返回这个键对应的值DEL key
– 如果存在的话删除这个键并返回1,不存在的话返回0EXISTS key
– 检查是否存在这个键,存在返回1,否则返回0RENAME key newKey
– 重命名键KEYS pattern
– 返回符合指定规则的所有键的列表
先列这么多
Redis数据类型
字符串String
Redis中最基本的数据类型,一个键(key)对应一个字符串值(value)
读写分别为GET key
和SET key "hello"
GETSET key value
– 给key设置新的值,同时返回旧的值STRLEN key
– 返回key对应字符串的长度APPEND key value
– 如果key已存在并且对应一个字符串,将value追加到旧的值的末尾,否则创建key,值为value
哈希表Hash Map
哈希表可以存储一系列string到string的映射表,这些键值对组合到一起就成了哈希表,所以哈希表比较适合存储对象
- 创建哈希表使用如下命令
该命令同样可以修改已经存在的哈希表
1 | HMSET mapName field1"value1" field2 "value2" field3 "value3" |
- 读取哈希表使用
HGETALL mapName
命令
会依次显示每个键值对的key和value
1 | 1) "field1" |
- 其它操作哈希表的命令
HDEL mapName field
– 删除一个字段,也可以在后面追加其它字段以一次性删除多个字段HEXISTS mapName field
– 检查哈希表中是否存在某个字段,存在返回1,否则返回0HGET mapName field
– 获取哈希表中指定字段的值HLEN mapName
– 哈希表中字段的数量HKEYS mapName
– 哈希表中所有的字段HVALS mapName
– 哈希表中所有的值
列表List
存储一系列字符串,通常把它当做双向队列使用
常见命令:
LPUSH key val
和RPUSH key val
– 在列表key的左边和右边插入一个字符串valLPUSHX key val
和RPUSHX key val
– 和上面一组命令功能相同,区别是这组命令必须在列表key存在时才会执行插入操作LPOP key
和RPOP key
– 分别从列表key的左边和右边移除一个元素,并返回这个元素的值BLPOP key timeout
和BRPOP key timeout
– 如果列表key里面一个元素都没有,使用上面的pop命令会直接返回空(nil)。使用这组前面加”B”的命令可以使命令阻塞,直到列表中出现了可以被弹出的元素或者时间达到timeout指定的超时时间。
另外,这组命令中的key可以指定多个,例如BLPOP listA listB listC 2
,这条命令会依次从listA,listB,listC中寻找可以弹出的元素,如果都没有则阻塞等待。
返回值包括元素本身以及这个元素之前所属的列表名称RPOPLPUSH src dest
和BRPOPLPUSH src dest timeout
– 转移元素,从src的右边弹出一个元素并插入到dest的左边,后者和上面一组类似,如果src里没有元素可以弹出了,就阻塞最多timeout秒。返回被转移的元素LINDEX key idx
– 根据索引idx从列表key中获取元素,idx从0开始LSET key idx val
– 和第6条对应,根据索引修改元素的值LLEN key
– 获取列表key的长度LRANGE key start stop
– 获取列表key中索引从start到stop的元素,LRANGE key 0 -1
可以快速获得所有的元素LREM key count val
– 删除列表中的某些元素,具体用法比较复杂,可以参考官方文档