Redis使用入门
2015-11-12 12:41
633 查看
Redis使用入门
文章目录1. Redis
Introduction
2. Redis
Install
3. Redis
keys
4. Redis
Strings
5. Redis
定时器
6. Redis
Lists
7. Redis
Sets
8. Redis
Sorted Sets
9. Redis
Hashes
10. Reference
本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
Redis Introduction
Redis是一个用C语言实现的key-value store. 除了最基础的基于字符串的键值对,Redis可以是更加复杂的数据结构,所以redis也常被称为是一个data structure server(数据结构服务器)
Redis支持的数据结构列表:
String(字符串)
List(列表, 基本的
链表)
Set(元素唯一的, 无序的集合)
Sorted Set(类似于Set, 但是每个字符串元素关联一个浮点数score, 用于排序)
Hash(哈希)
Bitmap
HyperLogLogs
本篇没有涵盖Bitmap和HyperLogLogs的使用
Redis Install
在Redis下载页面下载需要版本的redis123456789101112 | # 解压源文件$ tar xzf redis-3.0.2.tar.gz# 进入redis文件夹$ cd redis-3.0.2# 编译源文件$ make# 测试$ make test# 提示以下信息表示安装成功\o/ All tests passed without errors!Cleanup: may take some time... OK |
1 | $ /src/redis-server |
用过python应该都理解交互式的意义吧
1 | $ /src/redis-cli |
123456789101112131415 | $ vim ~/.zshrc# 在最后一行添加# Redis shortcuralias reds="/Users/andrew_liu/Development/redis-3.0.2/src/redis-server"alias redc="/Users/andrew_liu/Development/redis-3.0.2/src/redis-cli"# 保存后, 运行(Esc, :wq把保存并退出)$ source ~/.zshrc# 启动Redis服务器$ reds# 启动Redis交互式客户端$ redc |
Redis keys
Redis keys是二进制安全的, 可以使用任何二进制序列作为key, 空的字符串也是有效地key
Redis Strings
使用字符串作为value时, 我们在string key和string value之间建立了映射关系value不能大小不能操作
512MB
SET命令设置键值对, 重复设置key的value,
会覆盖原来的value
GET命令通过key检索value
INRC命令将给定key的value看做整型,
实现
加一操作, 这个命令是
原子性的(原子性中是事务ACID特性之一)
GETSET命令通过新的value设置key,
并返回旧的value
MSET和
MGET命令分别用于同时设置或检索多个key
EXISTS命令, 如果给定的key存在返回1,
否则返回0
DEL命令删除key-value对
123456789101112131415161718192021222324 | 127.0.0.1:6379> set mykey helloOK127.0.0.1:6379> get mykey"hello"127.0.0.1:6379> get mykey"1"127.0.0.1:6379> incr mykey(integer) 2127.0.0.1:6379> getset mykey how"2"127.0.0.1:6379> get mykey"how"127.0.0.1:6379> mset a 10 b 20 c 30OK127.0.0.1:6379> mget a b c1) "10"2) "20"3) "30"127.0.0.1:6379> exists a(integer) 1127.0.0.1:6379> del a(integer) 1127.0.0.1:6379> exists a(integer) 0 |
Redis 定时器
EXPIRE命令提供定时器功能, 设置key只能存在固定时间,
时间到key会被删除(
以秒为单位)
TTL用于查询key还有多长时间被删除.
TTL返回
-2表示key已经被删除, TTL返回
-1表示key不会expire
1234567891011 | 127.0.0.1:6379> set key valueOK127.0.0.1:6379> get key"value"127.0.0.1:6379> expire key 1000(integer) 1127.0.0.1:6379> ttl key(integer) 995# 1000秒后, 被删除127.0.0.1:6379> get key(nil) |
Redis Lists
Redis通过链表来实现List链表的实现优点是快速的插入和删除, 缺点是检索相对数组实现List慢
LPUSH命令从List的头部插入一个或多个value,
返回插入后的list长度
RPUSH命令从List的尾部插入一个或多个value,
返回插入后的list长度
LLEN命令返回List的长度
LRANGE命令从List取出固定一段
子List(类似于python中的切片操作),
有两个索引参数, 都可以为负数
LPOP命令从尾部删除value
RPOP命令从头部删除value, 没有value可删时返回nil
123456789101112131415161718 | 127.0.0.1:6379> rpush list A(integer) 1127.0.0.1:6379> rpush list B(integer) 2127.0.0.1:6379> lpush list C(integer) 3127.0.0.1:6379> llen list(integer) 3127.0.0.1:6379> lrange list 0 -11) "C"2) "A"3) "B"127.0.0.1:6379> rpush list a b c(integer) 6127.0.0.1:6379> rpop list"c"127.0.0.1:6379> lpop list"C" |
Redis Sets
value为Set, 表示无需的字符串集合SADD命令向set中增加元素, 如果元素已存在则返回0,
否则返回1
SMEMERS命令返回set集合, 返回的集合与插入时的顺序无关
SISMEMBER命令测试元素是否在set中,
在返回1, 不在返回0
SREM移除set中的元素
SUNION命令链接多个set集合
12345678910111213 | 127.0.0.1:6379> sadd mset 1(integer) 1127.0.0.1:6379> sadd mset 1(integer) 0127.0.0.1:6379> sadd mset 2(integer) 1127.0.0.1:6379> smembers mset1) "1"2) "2"127.0.0.1:6379> sismember mset 1(integer) 1127.0.0.1:6379> sismember mset 3(integer) 0 |
Redis Sorted Sets
Sorted Set类似于Set和Hash的混合, Sorted Set中的元素也是唯一不重复的字符窜元素, Set中的元素无需, Sorted Set中通过浮点数score排序, Sorted Set通过
跳表和
哈希表实现,
增加一个元素的复杂度
O(log(N))
排序原则:
score不同时, A.score > B.score => A > B
score相同时, A.score = B.score => A和B通过比较字符串的
字典序进行排序
ZADD命令增加带score的元素, 可以传入多个score-value对
ZRANGE命令类似于
LRANGE操作,
ZREVRANGE命令反序输出Sorted set元素片段
123456789101112131415161718192021222324 | 127.0.0.1:6379> zadd sset 1991"liu"(integer) 1127.0.0.1:6379> zadd sset 1991"andrew"(integer) 1127.0.0.1:6379> zadd sset 1992"dinosaur"(integer) 1127.0.0.1:6379> zadd sset 1993"bingo"(integer) 1127.0.0.1:6379> zadd sset 1994"hello"1995"world"(integer) 2127.0.0.1:6379> zrange sset 0 -11) "andrew"2) "liu"3) "dinosaur"4) "bingo"5) "hello"6) "world"127.0.0.1:6379> zrevrange sset 0 -11) "world"2) "hello"3) "bingo"4) "dinosaur"5) "liu"6) "andrew" |
Redis Hashes
HSET命令设置key中field和field应对的value
HMSET命令用于设置哈希中的多个field
HGET命令用于检索单个field
HMGET命令用于检索多个filed
HGETALL命令获得key的所有的field和field对应的value
1234567891011121314151617181920212223 | 127.0.0.1:6379> hset user:1001 name "jane"(integer) 1127.0.0.1:6379> hset user:1001 email "jane@gamil.com"(integer) 1127.0.0.1:6379> hgetall user:10011) "name"2) "jane"3) "email"4) "jane@gamil.com"127.0.0.1:6379> hmset user:1000 username andrewliu birthday 2015 verfield 1OK127.0.0.1:6379> hget user:1000 username"andrewliu"127.0.0.1:6379> hgetall user:10001) "username"2) "andrewliu"3) "birthday"4) "2015"5) "verfield"6) "1"127.0.0.1:6379> hmget user:1000 username birthday1) "andrewliu"2) "2015" |
相关文章推荐
- redis 基础介绍
- 夺命雷公狗---Redis---5-php操作redis
- Redis配置文件详解
- redis服务器远程漏洞-公钥-相关原理
- Redis监控
- Redis常用命令速查
- 夺命雷公狗---Redis---4-安全性
- 夺命雷公狗---Redis---3-Redis常用命令
- redis操作基本命令
- redis的基本使用
- redis 3.0.5安装
- Windows下配置Redis环境
- PYTHON 操作 REDIS
- Redis配置文件参数说明
- centos 安装redis java简单测试
- Redis持久化
- Python操作Redis之有序集合
- 记一次Redis被攻击的事件
- mac中使用redis cluster 配置出现的问题
- 使用redis-cli定时执行指定命令