-
Notifications
You must be signed in to change notification settings - Fork 55
Doc 2525 list tutorial code examples in C# #275
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
andy-stark-redis
wants to merge
19
commits into
master
from
DOC-2525-list-tutorial-code-examples-in-c
Closed
Changes from all commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
58e6515
DOC-2525 Added tutorial code steps
6dae2e2
DOC-2525 added list code samples
andy-stark-redis ab97268
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis 09f5786
DOC-2525 fixed array initialisers
andy-stark-redis 4b169bf
DOC-2525 fixed cross slot errors with ListMove
andy-stark-redis 727415e
DOC-2525 fixed outstanding array initialisers
andy-stark-redis 946885d
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis da7bf35
DOC-2525 dotnet format changes
andy-stark-redis 7c3546e
DOC-2525 moved REMOVE_START/END bits outside steps for consistency
andy-stark-redis 002f041
DOC-2525 dotnet format changes
andy-stark-redis 54cc2a3
DOC-2525 tidied formatting slightly
andy-stark-redis 050cf3f
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis b01bcb8
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
gerzse f828734
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis 1a03600
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis 461a5ca
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis e8b55e5
Merge branch 'master' into DOC-2525-list-tutorial-code-examples-in-c
andy-stark-redis c7ff34d
avoid parallel run in xunit
atakavci 0c0c353
fix Test.proj location
atakavci File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,330 @@ | ||
| //EXAMPLE: list_tutorial | ||
| //HIDE_START | ||
| //REMOVE_START | ||
| using NRedisStack.Tests; | ||
| //REMOVE_END | ||
| using StackExchange.Redis; | ||
|
|
||
| //REMOVE_START | ||
| namespace NRedisStack.Doc; | ||
| [Collection("DocsTests")] | ||
| //REMOVE_END | ||
| public class ListExample | ||
| { | ||
| //REMOVE_START | ||
| [SkipIfRedis(Is.OSSCluster)] | ||
| //REMOVE_END | ||
| public void run() | ||
| { | ||
| var muxer = ConnectionMultiplexer.Connect("localhost:6379"); | ||
| var db = muxer.GetDatabase(); | ||
| //REMOVE_START | ||
| db.KeyDelete("bikes:repairs"); | ||
| db.KeyDelete("bikes:finished"); | ||
| db.KeyDelete("{bikes}:repairs"); | ||
| db.KeyDelete("{bikes}:finished"); | ||
| //REMOVE_END | ||
| //HIDE_END | ||
|
|
||
| //STEP_START queue | ||
| long res1 = db.ListLeftPush("bikes:repairs", "bike:1"); | ||
| Console.WriteLine(res1); // >>> 1 | ||
|
|
||
| long res2 = db.ListLeftPush("bikes:repairs", "bike:2"); | ||
| Console.WriteLine(res2); // >>> 2 | ||
|
|
||
| RedisValue res3 = db.ListRightPop("bikes:repairs"); | ||
| Console.WriteLine(res3); // >>> "bike:1" | ||
|
|
||
| RedisValue res4 = db.ListRightPop("bikes:repairs"); | ||
| Console.WriteLine(res4); // >>> "bike:2" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(1, res1); | ||
| Assert.Equal(2, res2); | ||
| Assert.Equal("bike:1", res3); | ||
| Assert.Equal("bike:2", res4); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START stack | ||
| long res5 = db.ListLeftPush("bikes:repairs", "bike:1"); | ||
| Console.WriteLine(res5); // >>> 1 | ||
|
|
||
| long res6 = db.ListLeftPush("bikes:repairs", "bike:2"); | ||
| Console.WriteLine(res6); // >>> 2 | ||
|
|
||
| RedisValue res7 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res7); // >>> "bike:2" | ||
|
|
||
| RedisValue res8 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res8); // >>> "bike:1" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal("bike:2", res7); | ||
| Assert.Equal("bike:1", res8); | ||
| //REMOVE_END | ||
|
|
||
|
|
||
| //STEP_START llen | ||
| long res9 = db.ListLength("bikes:repairs"); | ||
| Console.WriteLine(res9); // >>> 0 | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(0, res9); | ||
| //REMOVE_END | ||
|
|
||
|
|
||
| //STEP_START lmove_lrange | ||
| long res10 = db.ListLeftPush("{bikes}:repairs", "bike:1"); | ||
| Console.WriteLine(res10); // >>> 1 | ||
|
|
||
| long res11 = db.ListLeftPush("{bikes}:repairs", "bike:2"); | ||
| Console.WriteLine(res11); // >>> 2 | ||
|
|
||
| RedisValue res12 = db.ListMove("{bikes}:repairs", "{bikes}:finished", ListSide.Left, ListSide.Left); | ||
| Console.Write(res12); // >>> "bike:2" | ||
|
|
||
| RedisValue[] res13 = db.ListRange("{bikes}:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res13)); // >>> "bike:1" | ||
|
|
||
| RedisValue[] res14 = db.ListRange("{bikes}:finished", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res14)); // >>> "bike:2" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(1, res10); | ||
| Assert.Equal(2, res11); | ||
| Assert.Equal("bike:2", res12); | ||
| Assert.Equal("bike:1", string.Join(", ", res13)); | ||
| Assert.Equal("bike:2", string.Join(", ", res14)); | ||
| bool delRes = db.KeyDelete("{bikes}:repairs"); | ||
| delRes = db.KeyDelete("{bikes}:finished"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START lpush_rpush | ||
| long res15 = db.ListRightPush("bikes:repairs", "bike:1"); | ||
| Console.WriteLine(res15); // >>> 1 | ||
|
|
||
| long res16 = db.ListRightPush("bikes:repairs", "bike:2"); | ||
| Console.WriteLine(res16); // >>> 2 | ||
|
|
||
| long res17 = db.ListLeftPush("bikes:repairs", "bike:important_bike"); | ||
| Console.WriteLine(res17); // >>> 3 | ||
|
|
||
| RedisValue[] res18 = db.ListRange("bikes:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res18)); // >>> "bike:important_bike, bike:1, bike:2" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(1, res15); | ||
| Assert.Equal(2, res16); | ||
| Assert.Equal(3, res17); | ||
| Assert.Equal("bike:important_bike, bike:1, bike:2", string.Join(", ", res18)); | ||
| delRes = db.KeyDelete("bikes:repairs"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START variadic | ||
| long res19 = db.ListRightPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); | ||
| Console.WriteLine(res19); // >>> 3 | ||
|
|
||
| long res20 = db.ListLeftPush("bikes:repairs", new RedisValue[] { "bike:important_bike", "bike:very_important_bike" }); | ||
| Console.WriteLine(res20); // >>> 5 | ||
|
|
||
| RedisValue[] res21 = db.ListRange("bikes:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res21)); // >>> "bike:very_important_bike, bike:important_bike, bike:1, bike:2, bike:3" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(3, res19); | ||
| Assert.Equal(5, res20); | ||
| Assert.Equal("bike:very_important_bike, bike:important_bike, bike:1, bike:2, bike:3", string.Join(", ", res21)); | ||
| delRes = db.KeyDelete("bikes:repairs"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START lpop_rpop | ||
| long res22 = db.ListRightPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); | ||
| Console.WriteLine(res22); // >>> 3 | ||
|
|
||
| RedisValue res23 = db.ListRightPop("bikes:repairs"); | ||
| Console.WriteLine(res23); // >>> "bike:3" | ||
|
|
||
| RedisValue res24 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res24); // >>> "bike:1" | ||
|
|
||
| RedisValue res25 = db.ListRightPop("bikes:repairs"); | ||
| Console.WriteLine(res25); // >>> "bike:2" | ||
|
|
||
| RedisValue res26 = db.ListRightPop("bikes:repairs"); | ||
| Console.WriteLine(res26); // >>> <Empty string> | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(3, res22); | ||
| Assert.Equal("bike:3", res23); | ||
| Assert.Equal("bike:1", res24); | ||
| Assert.Equal("bike:2", res25); | ||
| Assert.Equal("", string.Join(", ", res26)); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START ltrim | ||
| long res27 = db.ListLeftPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); | ||
| Console.WriteLine(res27); // >>> 5 | ||
|
|
||
| db.ListTrim("bikes:repairs", 0, 2); | ||
| RedisValue[] res28 = db.ListRange("bikes:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res28)); // "bike:5, bike:4, bike:3" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(5, res27); | ||
| Assert.Equal("bike:5, bike:4, bike:3", string.Join(", ", res28)); | ||
| delRes = db.KeyDelete("bikes:repairs"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START ltrim_end_of_list | ||
| long res29 = db.ListRightPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); | ||
| Console.WriteLine(res29); // >>> 5 | ||
|
|
||
| db.ListTrim("bikes:repairs", -3, -1); | ||
| RedisValue[] res30 = db.ListRange("bikes:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res30)); // >>> "bike:3, bike:4, bike:5" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(5, res29); | ||
| Assert.Equal("bike:3, bike:4, bike:5", string.Join(", ", res30)); | ||
| delRes = db.KeyDelete("bikes:repairs"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START brpop | ||
| long res31 = db.ListRightPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2" }); | ||
| Console.WriteLine(res31); // >>> 2 | ||
|
|
||
| Tuple<RedisKey, RedisValue>? res32 = db.BRPop(new RedisKey[] { "bikes:repairs" }, 1); | ||
|
|
||
| if (res32 != null) | ||
| Console.WriteLine($"{res32.Item1} -> {res32.Item2}"); // >>> "bikes:repairs -> bike:2" | ||
|
|
||
| Tuple<RedisKey, RedisValue>? res33 = db.BRPop(new RedisKey[] { "bikes:repairs" }, 1); | ||
|
|
||
| if (res33 != null) | ||
| Console.WriteLine($"{res33.Item1} -> {res33.Item2}"); // >>> "bikes:repairs -> bike:1" | ||
|
|
||
| Tuple<RedisKey, RedisValue>? res34 = db.BRPop(new RedisKey[] { "bikes:repairs" }, 1); | ||
| Console.WriteLine(res34); // >>> "Null" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(2, res31); | ||
|
|
||
| if (res32 != null) | ||
| Assert.Equal("bikes:repairs -> bike:2", $"{res32.Item1} -> {res32.Item2}"); | ||
| if (res33 != null) | ||
| Assert.Equal("bikes:repairs -> bike:1", $"{res33.Item1} -> {res33.Item2}"); | ||
|
|
||
| Assert.Null(res34); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START rule_1 | ||
| bool res35 = db.KeyDelete("new_bikes"); | ||
| Console.WriteLine(res35); // >>> False | ||
|
|
||
| long res36 = db.ListRightPush("new_bikes", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); | ||
| Console.WriteLine(res36); // >>> 3 | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.False(res35); | ||
| Assert.Equal(3, res36); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START rule_1.1 | ||
| bool res37 = db.StringSet("new_bikes", "bike:1"); | ||
| Console.WriteLine(res37); // >>> True | ||
|
|
||
| RedisType res38 = db.KeyType("new_bikes"); | ||
| Console.WriteLine(res38); // >>> RedisType.String | ||
|
|
||
| try | ||
| { | ||
| long res39 = db.ListRightPush("new_bikes", new RedisValue[] { "bike:2", "bike:3" }); | ||
| } | ||
| catch (Exception e) | ||
| { | ||
| Console.WriteLine(e); | ||
| } | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.True(res37); | ||
| Assert.Equal(RedisType.String, res38); | ||
| delRes = db.KeyDelete("new_bikes"); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START rule_2 | ||
| long res40 = db.ListLeftPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); | ||
| Console.WriteLine(res40); // >>> 3 | ||
|
|
||
| bool res41 = db.KeyExists("bikes:repairs"); | ||
| Console.WriteLine(res41); // >>> True | ||
|
|
||
| RedisValue res42 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res42); // >>> "bike:3" | ||
|
|
||
| RedisValue res43 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res43); // >>> "bike:2" | ||
|
|
||
| RedisValue res44 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res44); // >>> "bike:1" | ||
|
|
||
| bool res45 = db.KeyExists("bikes:repairs"); | ||
| Console.WriteLine(res45); // >>> False | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(3, res40); | ||
| Assert.True(res41); | ||
| Assert.Equal("bike:3", res42); | ||
| Assert.Equal("bike:2", res43); | ||
| Assert.Equal("bike:1", res44); | ||
| Assert.False(res45); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START rule_3 | ||
| bool res46 = db.KeyDelete("bikes:repairs"); | ||
| Console.WriteLine(res46); // >>> False | ||
|
|
||
| long res47 = db.ListLength("bikes:repairs"); | ||
| Console.WriteLine(res47); // >>> 0 | ||
|
|
||
| RedisValue res48 = db.ListLeftPop("bikes:repairs"); | ||
| Console.WriteLine(res48); // >>> Null | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.False(res46); | ||
| Assert.Equal(0, res47); | ||
| Assert.Equal(RedisValue.Null, res48); | ||
| //REMOVE_END | ||
|
|
||
| //STEP_START ltrim.1 | ||
andy-stark-redis marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| long res49 = db.ListLeftPush("bikes:repairs", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); | ||
| Console.WriteLine(res49); // >>> 5 | ||
|
|
||
| db.ListTrim("bikes:repairs", 0, 2); | ||
| RedisValue[] res50 = db.ListRange("bikes:repairs", 0, -1); | ||
| Console.WriteLine(string.Join(", ", res50)); // >>> "bike:5, bike:4, bike:3" | ||
| //STEP_END | ||
|
|
||
| //REMOVE_START | ||
| Assert.Equal(5, res49); | ||
| Assert.Equal("bike:5, bike:4, bike:3", string.Join(", ", res50)); | ||
| //REMOVE_END | ||
|
|
||
| //HIDE_START | ||
| } | ||
| } | ||
| //HIDE_END | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| <Project Sdk="Microsoft.Build.Traversal/2.0.24"> | ||
| <ItemGroup> | ||
| <ProjectReference Include="**\*.*proj" /> | ||
| </ItemGroup> | ||
| </Project> |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.